Numpy
  Numpy是Python中科学计算的核心库。Numpy提供了高性能的多维数组对象,还有用于处理这些数组的工具。
数组
  Numpy的主要数据类型是ndarray即多维数组,可以用嵌套的Python列表中初始化numpy数组,并使用方括号访问元素。数组具有以下几个属性:

  • ndarray.ndim: 数组的维数
  • ndarray.shape: 数组每一维的大小
  • ndarray.size: 数组中全部元素的数量
  • ndarray.dtype: 数组中元素的类型(numpy.int32, numpy.int16, and numpy.float64等)
  • ndarray.itemsize:每个元素占几个字节
    数组操作
import numpy as np                # 导入numpy模块
a = np.array([1,2,3])
print(type(a))                            # a的类型是numpy.ndarray
print(a.shape)                           # 一维数组,列向量
print(a[0],a[1],a[2])                    # 下标从0开始计数
a[0] = 5                                      # 修改数组元素的值
print(a)
b = np.array([[1,2,3],[4,5,6]])
print(b.shape)                          # 二维数组,2×3
print(b[0,0],b[0,1],b[1,0])          # 二维数组下标c = np.array([1,])                   # 一维数组
print(c.shape)

运行结果

<class 'numpy.ndarray'>
(3,)1 2 3[5 2 3](2, 3)1 2 4(1,)

创建数组

import numpy as np
a = np.zeros((2,2))                  # 2×2全零数组
print(a)
b = np.ones((1,2))                   # 2×2全一数组
print(b)
c = np.full((2,2),7)                 # 2×2常量数组,运行结果是‘7’而不是‘7.’
print(c)
d = np.eye(2)                        # 2×2单位数组
print(d)
e = np.random.random((2,2))          # 2×2随机数组,范围为[0,1]
print(e)

运行结果

[[ 0.  0.][ 0.  0.]][[ 1.  1.]][[7 7][7 7]][[ 1.  0.][ 0.  1.]][[ 0.75674195  0.00198805][ 0.0375324   0.72334415]]

数组索引
  Numpy提供了几种索引数组的方法。
切片
  类似于Python中的列表List,可以将numpy数组进行切片。如果是多维数组,需要为数组的每个维度指定一个切片。

import numpy as np
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
b = a[:2,1:3]print(a)
print(b)
print(a[0,1])                        # 第一行第二个
b[0,0] = 77                          # a、b共用同一数据
print(a[0,1])a[0,1] = 60                          # 改变a或b,都会改动另一方,类似C++中引用
print(b[0,0])

运行结果

[[ 1  2  3  4][ 5  6  7  8][ 9 10 11 12]][[2 3][6 7]]27760

整型索引与切片索引混合
  这个做法会产生比原始数组更低级的数组。

import numpy as np
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
row_r1 = a[1,:]                      # 产生一维数组
row_r2 = a[1:2,:]                    # 产生二维数组
print(row_r1,row_r1.shape)
print(row_r2,row_r2.shape)col_r1 = a[:,1]
col_r2 = a[:,1:2]
print(col_r1,col_r1.shape)
print(col_r2,col_r2.shape)

运行结果

[5 6 7 8] (4,)[[5 6 7 8]] (1, 4)[ 2  6 10] (3,)[[ 2][ 6][10]] (3, 1)

整数数组索引
  当对numpy数组使用切片索引时,生成的数组将始终是原始数组的子数组。而整数数组索引则允许使用另一个数组的数据构造任意的数组。

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
print(a[[0,1,2],[0,1,0]])                      # 行、列
print(np.array([a[0,0],a[1,1],a[2,0]]))        # 每个的坐标b = np.array([0,2,0,1])
print(a[np.arange(4),b])a[np.arange(4),b] += 10
print(a)

运行结果

[1 5 7][1 5 7][ 1  6  7 11][[11  2  3][ 4  5 16][17  8  9][10 21 12]]

布尔数组索引
  布尔数组索引可挑选出一个数组的任意元素。通常,这种类型的索引用于选择满足某些条件的数组的元素。

 import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
bool_idx = (a > 2)                             # 逐个比较
print(bool_idx)
print(a[bool_idx])
print(a[a > 2])

运行结果

[[False False][ True  True][ True  True]][3 4 5 6][3 4 5 6]

数据类型

import numpy as np
x = np.array([1,2])                            # int64
print(x,x.dtype)x = np.array([1.0,2.0])                        # float64
print(x,x.dtype)x = np.array([1.5,2.8],dtype = np.int64)       # 强制转换,int64
print(x,x.dtype)

运行结果

[1 2] int32[ 1.  2.] float64[1 2] int64

数组计算
  数组可以进行基本的数学函数计算,并且可以作为操作符重载和在numpy模块中的函数。

import numpy as np
x = np.array([[1,2],[3,4]],dtype = np.float64)
y = np.array([[5,6],[7,8]],dtype = np.float64)print(x + y)                             # 加法
print(np.add(x,y))print(x - y)                             # 减法
print(np.subtract(x,y))print(x * y)                             # 乘法
print(np.multiply(x,y))print(x / y)                             # 除法
print(np.divide(x,y))print(np.sqrt(x))                         # 开方
print(np.sum(x))                          # 所有元素相加
print(np.sum(x,axis = 0))                 # 列向量相加
print(np.sum(x,axis = 1))                 # 行向量相加v = np.array([9,10])
w = np.array([11,12])print(x.T)                                # 多维数组转置
print(v.T)                                # 一维数组转置不发生改变print(v.dot(w))                           # 计算内积
print(np.dot(v,w))
print(np.dot(x,v))
print(np.dot(x,y))

运行结果

[[  6.   8.]                              # 加法 [ 10.  12.]]
[[  6.   8.][ 10.  12.]][[-4. -4.]                                # 减法[-4. -4.]]
[[-4. -4.][-4. -4.]][[  5.  12.]                              # 乘法[ 21.  32.]]
[[  5.  12.][ 21.  32.]][[ 0.2         0.33333333]                # 除法[ 0.42857143  0.5       ]]
[[ 0.2         0.33333333][ 0.42857143  0.5       ]][[ 1.          1.41421356]                # 开方[ 1.73205081  2.        ]]10.0                                      # 所有元素相加[ 4.  6.]                                 # 列向量相加[ 3.  7.]                                 # 行向量相加[[ 1.  3.]                                # 多维数组转置[ 2.  4.]][ 9 10]                                   # 一维数组转置不发生改变219                                       # 计算内积v.dot(w)219                                       # 计算内积np.dot(v,w)[ 29.  67.]                               # 计算内积np.dot(x,v)[[ 19.  22.]                              # 计算内积np.dot(x,y)[ 43.  50.]]

Broadcasting
  Broadcasting广播机制是Python中一种强大的机制,它允许numpy在执行算术运算时使用不同形状的数组。当对一个较小的数组和一个较大的数组进行运算时,通过多次使用较小的数组来对较大的数组执行一些操作。

  import numpy as np
x = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
v = np.array([1,0,1])y_empty = np.empty_like(x)                     # 创建一个与x大小相同的空矩阵
for i in range(4):y_empty[i,:] = x[i,:] + v;
print(y_empty)vv = np.tile(v,(4,1))               # 将v垂直地堆叠起来,形成新数组vv,比上一种方法运行速度快
print(vv)
y_tile = x + vv
print(y_tile)y_bc = x + v                                   # 传播机制BoardCasting
print(y_bc)

运行结果

[[ 2  2  4]                                   # y_empty[ 5  5  7][ 8  8 10][11 11 13]][[1 0 1]                                      # vv[1 0 1][1 0 1][1 0 1]][[ 2  2  4]                                   # y_tile[ 5  5  7][ 8  8 10][11 11 13]][[ 2  2  4]                                   # y_bc[ 5  5  7][ 8  8 10][11 11 13]]

【Python】Numpy简单入门相关推荐

  1. Python爬虫简单入门教程

    这篇 Python 爬虫教程主要讲解以下 5 部分 了解网页结构: 使用 requests 库抓取网站数据: 使用 Beautiful Soup 解析网页: 清洗和组织数据: 爬虫攻防战: 了解网页结 ...

  2. python爬虫简单入门(爬网页文本信息)

    环境 python 3.8.2 Shell 也可以使用PyCharm 一.爬网页文本基本步骤 1.请求目标网页,用requests请求,如果还没有安装,打开cmd,输入下面命令进行安装 pip ins ...

  3. 爬取每日必应图片,python爬虫简单入门

    爬取每日必应图片: 网址:微软必应搜索 第一步,打开网站: 右键,查看网页源代码: 初看有点吓人,不过幸运的是图片地址就在开头几行显眼的位置 ![在这里插入图片描述](https://img-blog ...

  4. 机器人 python 极客入门_机器人Python极客编程入门与实战

    Python是一种面向对象.解释型的计算机程序设计语言,其简洁实用.高效,拥有众多模块库,可移植,跨平台,简单易学,易于上手.随着计算机深入发展,Python逐渐成为最适合青少年做创意设计的语言,也同 ...

  5. 很多都是python很简单吗,但是要如何才能入门python并精通呢?

    1,python怎么学 一般来说,Python几个月应该是可以入门了.如果你几个月还没有入门,一定是方法不对,要么就是偷懒了.我在公众号里面有一篇文章详细写过 '初学者上来不要学爬虫',爬虫虽然非常有 ...

  6. 一步一步学python爬虫_初学Python之爬虫的简单入门

    初学Python之爬虫的简单入门 一.什么是爬虫? 1.简单介绍爬虫 爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等. 网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的数据 ...

  7. [转载] python numpy 子数组_Python学习笔记3:Numpy入门

    参考链接: Python中的numpy.logaddexp2 参考<Python:数据科学手册>一书,仅作个人学习及记录使用,若有侵权,请联系后台删除. 1 理解Python中的数据类型 ...

  8. Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习

    Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...

  9. [入门教程](python numpy入门)

    [入门教程](python numpy入门) NumPy NumPy是一个开源的Python科学计算基础库,包含 •一个强大的N维数组对象ndarray •广播功能函数 •整合C/C++/Fortra ...

最新文章

  1. html 怎么自动让图片居中显示,css中怎样让图片居中显示?
  2. 《信号检测与处理》的学习
  3. (基础)HTML文档结构知识点讲解
  4. java实现选择排序 带打印,选择排序算法的JAVA实现
  5. SD 胡策 Round 1 T3 彩尾巴猹的二进制数
  6. jtag引脚定义_从逆向分析的角度学习硬件调试技巧JTAG,SSD和固件提取
  7. 提升安全性WindowsXP必禁的十大服务
  8. Android Studio实现QQ的注册、登录和好友列表页面的跳转
  9. React-12 Context的使用
  10. CGI-plus_x86_x64_自适应版系统安装和备份工具参数案例笔记
  11. 最新 CCF A 类人工智能会议论文下载汇总 (含2022)
  12. Python读取文件找出重复元素
  13. Word TOC域的使用说明
  14. java学习笔记(二):Spring-security的Remember-me配置,以及配置Session管理器防止Session fixation
  15. 微信小程序上传Excel文件并分析上传值数据库
  16. html页面小宠物代码大全,纯css3实现宠物小鸡实例代码
  17. Mysql中的常用类型 说明
  18. 仿真(Simulation)
  19. html+css实现了简单的注册页面
  20. [Ubuntu 18.04]公共DNS设置[/etc/resolv.conf]

热门文章

  1. Top1的3D目标检测方法(已开源)
  2. git 下载项目和更新项目(1)
  3. RDKit:化合物骨架分析
  4. Machine Learning | (3) Scikit-learn的分类器算法-k-近邻
  5. 250g硬盘linux分区,linux分区格式化命令使用方法
  6. python django windows_Python+Django在windows下的开发环境配置图解
  7. 生信分析-本地BLAST
  8. 微生物组-宏基因组分析专题研讨会(2022.5)
  9. FEMS:微生物群落生态学数据挖掘的R包microeco
  10. MPB:中南大学刘学端、马丽媛组-基于16S测序和RT-qPCR的硫化矿物表面微生物群落组成分析...