Python NumPy库安装使用笔记
作者:junjie 时间:2022-05-20 17:49:56
1. NumPy安装
使用pip包管理工具进行安装
$ sudo pip install numpy
使用pip包管理工具安装ipython(交互式shell工具)
$ sudo pip instlal ipython
$ ipython --pylab #pylab模式下, 会自动导入SciPy, NumPy, Matplotlib模块
2. NumPy基础
2.1. NumPy数组对象
具体解释可以看每一行代码后的解释和输出
In [1]: a = arange(5) # 创建数据
In [2]: a.dtype
Out[2]: dtype('int64') # 创建数组的数据类型
In [3]: a.shape # 数组的维度, 输出为tuple
Out[3]: (5,)
In [6]: m = array([[1, 2], [3, 4]]) # array将list转换为NumPy数组对象
In [7]: m # 创建多维数组
Out[7]:
array([[1, 2],
[3, 4]])
In [10]: m.shape # 维度为2 * 2
Out[10]: (2, 2)
In [14]: m[0, 0] # 访问多维数组 * 定位置的元素, 下标从0开始
Out[14]: 1
In [15]: m[0, 1]
Out[15]: 2
2.2. 数组的索引和切片
In [16]: a[2: 4] # 切片操作类似与Python中list的切片操作
Out[16]: array([2, 3])
In [18]: a[2 : 5: 2] # 切片步长为2
Out[18]: array([2, 4])
In [19]: a[ : : -1] # 翻转数组
Out[19]: array([4, 3, 2, 1, 0])
In [20]: b = arange(24).reshape(2, 3, 4) # 修改数组的维度
In [21]: b.shape
Out[21]: (2, 3, 4)
In [22]: b # 打印数组
Out[22]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
In [23]: b[1, 2, 3] # 选取特定元素
Out[23]: 23
In [24]: b[ : , 0, 0] # 忽略某个下标可以用冒号代替
Out[24]: array([ 0, 12])
In [23]: b[1, 2, 3]
Out[23]: 23
In [24]: b[ : , 0, 0] # 忽略多个下标可以使用省略号代替
Out[24]: array([ 0, 12])
In [26]: b.ravel() # 数组的展平操作
Out[26]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
In [27]: b.flatten() # 与revel功能相同, 这个函数会请求分配内存来保存结果
Out[27]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
In [30]: b.shape = (6, 4) # 可以直接对shape属性赋值元组来设置维度
In [31]: b
Out[31]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
In [30]: b.shape = (6, 4) # 矩阵的转置
In [31]: b
Out[31]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
2.3. 组合数组
In [1]: a = arange(9).reshape(3, 3) # 生成数组对象并改变维度
In [2]: a
Out[2]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [3]: b = a * 2 # 对a数组对象所有元素乘2
In [4]: b
Out[4]:
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
#######################
In [5]: hstack((a, b)) # 水平组合数组a和数组b
Out[5]:
array([[ 0, 1, 2, 0, 2, 4],
[ 3, 4, 5, 6, 8, 10],
[ 6, 7, 8, 12, 14, 16]])
In [6]: vstack((a, b)) # 垂直组合数组a和数组b
Out[6]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
In [7]: dstack((a, b)) # 深度组合数组, 沿z轴方向层叠组合数组
Out[7]:
array([[[ 0, 0],
[ 1, 2],
[ 2, 4]],
[[ 3, 6],
[ 4, 8],
[ 5, 10]],
[[ 6, 12],
[ 7, 14],
[ 8, 16]]])
2.4. 分割数组
In [8]: a
Out[8]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [9]: hsplit(a, 3) # 将数组沿水平方向分割成三个相同大小的子数组
Out[9]:
[array([[0],
[3],
[6]]),
array([[1],
[4],
[7]]),
array([[2],
[5],
[8]])]
In [10]: vsplit(a, 3) # 将数组沿垂直方向分割成三个子数组
Out[10]: [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
2.5. 数组的属性
In [12]: a.ndim # 给出数组的尾数或数组的轴数
Out[12]: 2
In [13]: a.size # 数组中元素的个数
Out[13]: 9
In [14]: a.itemsize # 数组中元素在内存中所占字节数(int64)
Out[14]: 8
In [15]: a.nbytes # 数组所占总字节数, size * itemsize
Out[15]: 72
In [18]: a.T # 和transpose函数一样, 求数组的转置
Out[18]:
array([[0, 3, 6],
[1, 4, 7],
[2, 5, 8]])
2.6. 数组的转换
In [19]: a.tolist() # 将NumPy数组转换成python中的list
Out[19]: [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
3. 常用函数
In [22]: c = eye(2) # 构建2维单位矩阵
In [23]: c
Out[23]:
array([[ 1., 0.],
[ 0., 1.]])
In [25]: savetxt("eye.txt", c) # 将矩阵保存到文件中
In [5]: c, v = loadtxt("test.csv", delimiter=",", usecols=(0, 1), unpack=True) # 分隔符为, usecols为元组表示要获取的字段数据(每一行的第零段和第一段), unpack为True表示拆分存储不同列的数据, 分别存入c, v
In [12]: c
Out[12]: array([ 1., 4., 7.])
In [13]: mean(c) # 计算矩阵c的mean均值
Out[13]: 4.0
In [14]: np.max(c) # 求数组中的最大值
Out[14]: 7.0
In [15]: np.min(c) # 求数组中的最小值
Out[15]: 1.0
In [16]: np.ptp(c) # 返回数组最大值和最小值之间的差值
Out[16]: 6.0
In [18]: numpy.median(c) # 找到数组中的中位数(中间两个数的平均值)
Out[18]: 4.0
In [19]: numpy.var(c) # 计算数组的方差
Out[19]: 6.0
In [20]: numpy.diff(c) # 返回相邻数组元素的差值构成的数组
Out[20]: array([ 3., 3.])
In [21]: numpy.std(c) # 计算数组的标准差
Out[21]: 2.4494897427831779
In [22]: numpy.where(c > 3) # 返回满足条件的数组元素的下标组成的数组
Out[22]: (array([1, 2]),)
标签:Python,NumPy
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
关于Python的一些学习总结
2022-01-10 11:23:41
对Python中一维向量和一维向量转置相乘的方法详解
2022-01-24 12:44:14
![](https://img.aspxhome.com/file/2023/9/66739_0s.jpg)
文字链接,怎么办?
2008-08-04 13:18:00
![](https://img.aspxhome.com/file/UploadPic/20088/4/20088413222403s.gif)
给网页添加打印功能按钮
2008-12-12 13:11:00
![](https://img.aspxhome.com/file/UploadPic/200812/12/print-68s.jpg)
Python基于SMTP协议实现发送邮件功能详解
2022-07-17 00:31:00
![](https://img.aspxhome.com/file/2023/8/72838_0s.png)
python获取从命令行输入数字的方法
2021-08-23 15:19:02
python自动登录12306并自动点击验证码完成登录的实现源代码
2021-07-08 12:50:29
python用pyecharts画矩形树图实例
2022-12-20 21:42:04
![](https://img.aspxhome.com/file/2023/0/90310_0s.png)
SQL Server 2005 FOR XML嵌套查询使用详解
2009-01-06 11:20:00
Python unittest框架操作实例解析
2023-06-12 14:14:57
使用xmlhttp为网站增加股市行情查询功能
2007-10-10 21:09:00
PDO::beginTransaction讲解
2023-06-06 00:57:46
利用Python实现朋友圈中的九宫格图片效果
2023-07-31 01:37:22
![](https://img.aspxhome.com/file/2023/8/88868_0s.jpg)
MySQL的root密码丢失解决方法
2011-05-05 15:56:00
网页设计进阶之一 (步骤和大局观)
2008-08-23 10:39:00
ASP小偷(远程数据获取)程序的入门教程
2007-09-21 12:48:00
python使用turtle库与random库绘制雪花
2021-02-21 22:51:20
![](https://img.aspxhome.com/file/2023/4/72854_0s.jpg)
Python 可变类型和不可变类型及引用过程解析
2021-07-13 00:04:27
python爬虫调度器用法及实例代码
2023-02-15 08:54:21
![](https://img.aspxhome.com/file/2023/6/76936_0s.png)
解读HTML:大厦的基石
2008-12-01 12:57:00