一.基本概念
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
- NumPy 官网 http://www.numpy.org/
- NumPy 源代码:https://github.com/numpy/numpy
- SciPy 官网:https://www.scipy.org/
- SciPy 源代码:https://github.com/scipy/scipy
- Matplotlib 官网:https://matplotlib.org/
- Matplotlib 源代码:https://github.com/matplotlib/matplotlib
二. Ndarray
实例 1 :
import numpy as np
a = np.array([1,2,3])
print (a)
输出结果如下:
[1, 2, 3]
实例 2 :
# 多于一个维度
import numpy as np
a = np.array([[1, 2], [3, 4]])
print (a)
输出结果如下:
[[1, 2]
[3, 4]]
实例 3 :
# 最小维度
import numpy as np
a = np.array([1, 2, 3,4,5], ndmin = 2)
print (a)
输出如下:
[[1, 2, 3, 4, 5]]
实例 4 :
# dtype 参数
import numpy as np
a = np.array([1, 2, 3], dtype = complex)
print (a)
输出结果如下:
[ 1.+0.j, 2.+0.j, 3.+0.j]
三.矩阵库(Matrix)
全零方阵 :









slice(切片)与index :

arr[3:8] = -2 : 更改3-8的数组元素 多维数组 :

arr_2[0,1] : 深度是0的第二行
arr_2[0,2,1:] : 深度是0的第三行的第二个数到最后一个数




也可以使用np.ix_: 交叉相乘的,元素个数为122,第一个[0]是深度,第二个[0,2]是行数,第三个[0,2]是列数,但是注意输出形状为 : (1,2,2)


列数要相同 :





np.dstack() : 第三个轴不同之外,其他轴要相同(所以三维以上才能用)
np.concatenate : 更多轴合并,比如想要第5轴合并,axis以0开始
如果想要将维度相同,形状相同的矩阵在深度上合并,首先需要对矩阵扩充维度,比如arr_10是3 * 2的矩阵,要扩充成1 * 3 * 2的矩阵 :
np.expand_dims(arr_10,axis = 0)
np.expand_dims(arr_11,axis = 0)
然后用np.concatenate在深度上进行叠加 :
np.concatenate((arr_10,arr_11),arix = 0)
最后得到一个2 * 3 * 2的矩阵

1.两个数组进行加减时,维度不相同的时候要向维度较大的看齐,比如3 *3 *4 + 4,首先用np.expand_dims将4扩充到1 * 1 * 4(在前面扩充,内部做了这个机制)
2.这个就很好理解了,7 * 1 * 8 + 1 * 5 * 1 = 7 * 5 * 8数组
- 3 * 3 * 4 + 1 * 1 * 4 3对1 ,4对4因此可以计算
7 * 2 * 8 + 7 * 5 * 8就不行,因为2*5既没有1,又不相等,就不能计算


网友评论