一维数组(向量)
- 创建数组
-
a = np.array([1., 2., 3.])
print(a)序号 0 1 2 结果 1. 2. 3.
- 指定长度的并赋值0的数组
-
b = np.zeros(3, int)
print(b)序号 0 1 2 结果 0. 0. 0.
- 创建一个空数组,以大小和元素类型匹配现有数组
-
c = np.zeros_like(a)
print©序号 0 1 2 结果 0. 0. 0.
- 创建填充值的数组
- print(np.ones(3))
序号 0 1 2 结果 1. 1. 1. - print(np.zeros(3))
序号 0 1 2 结果 0. 0. 0. - print(np.empty(3))
序号 0 1 2 结果 0. 0. 0. - print(np.full(3, 5.)
序号 0 1 2 结果 5. 5. 5.
有序数组
- arange(start, stop, step)
-
传一个参数代表stop,如下:
-
print(np.arange(6))
序号 0 1 2 3 4 5 结果 0 1 2 3 4 5 -
传两个参数代表start,stop,如下:
-
print(np.arange(2, 6))
序号 0 1 2 3 结果 2 3 4 5 -
传三个参数代表start,stop,step,如下:
-
print(np.arange(1, 6, 2)
序号 0 1 2 结果 1 3 5
- linspace(start, stop, num)
- print(np.linspace(0, 0.5, 6))
序号 0 1 2 3 4 5 结果 0. 0.1 0.2 0.3 0.4 0.5
随机数
- np.random.randint(start, stop, num)
- 返回start~stop区间的num个随机整数,默认num是1
- print(np.random.randint(0, 10, 3))
序号 0 1 2 结果 1 3 5
- np.random.rand(num)
- 返回num个随机0~1的浮点数
序号 0 1 2 结果 0.68892097 0.66416965 0.63380222
- np.random.uniform(start, stop, num)
- 返回start~stop区间的num个随机互不相同的数
- print(np.random.uniform(1, 10, 3))
序号 0 1 2 结果 2.72110897 9.02662942 9.66096014
- np.random.randn(3)
- 和np.random.rand相似,只是该函数生成的随机数符合标准正态分布μ=0,σ=1
- np.random.normal(5, 2, 3)
符合正态分布μ=5,σ=2
数组索引(前闭后开)
- 取值
-
value = np.arange(1, 6)
-
print(value)
序号 0 1 2 3 4 结果 1 2 3 4 5 -
print(value [1])
序号 0 结果 1 -
print(value [2:4]) # 前闭后开,取2~4
序号 0 1 结果 3 4 -
print(value [-2:]) # 最后两个数
序号 0 1 结果 4 5 -
print(value [::2]) # 从0开始隔一个取一个
序号 0 1 2 结果 1 3 5 -
print(value [[1, 3, 4]] # 指定一个下标数组序列
序号 0 1 2 结果 2 4 5
- 修改值
- value [2:4] = 0
- print(value)
序号 0 1 2 3 4 结果 1 2 0 0 5
通过切片修改数组
- 对比
python list numpy array pyList = [1, 2, 3] npArray = np.array([1, 2, 3]) List1 = pyList # no copy Array1 = npArray # no copy List2 = pyList[:] # copy Array2 = npArray[:] # no copy List3 = pyList.copy() # copy | Array3 = npArray.copy() # copy|
轴参数
- 矩阵value
- print(value)
1 2 3 4 5 6
- 整体求和
r e s u l t = ∑ i j v a l u e i j result = \sum_{ij} value_{ij} result=ij∑valueij
-
print(result)
21
注:i (axis=0) ; j (axis=1)
- 按列求和
r e s u l t = ∑ i v a l u e i j result = \sum_{i}value_{ij} result=i∑valueij
- print(value)
5 7 9
- 按行求和
r e s u l t = ∑ j v a l u e i j result = \sum_{j}value_{ij} result=j∑valueij
- print(result)
6 15
矩阵算术运算
-
value 为三行三列矩阵
1 2 3 4 5 6 7 8 9 -
‘/’
-
result = value / 3
-
print(result)
0.33333333 0.66666667 1. 1.33333333 1.66666667 2. 2.33333333 2.66666667 3.
-
-
‘/’
-
temp = np.array([[3], [6], [9]])
-
result = value / temp
-
print(result)
0.33333333 0.66666667 1. 0.66666667 0.83333333 1. 0.77777778 0.88888889 1.
-
-
‘*’
-
temp = np.array([-1, 0, 1])
-
result = value * temp
-
print(result)
-1 0 3 -4 0 6 -7 0 9
-
-
‘*’
-
value = np.array([1, 2, 3])
-
temp = np.array([[1], [2], [3]])
-
result = value * temp
-
print(result)
1 2 3 2 4 6 3 6 9
-
矩阵统计
- 返回数值
-
min()
value = [[4,8,5],
[9,3,1]]
print(value)4 8 5 9 3 1 r e s u l t = min i j v a l u e i j result = \min_{ij}value_{ij} result=ijminvalueij
- print(value.min())
1 - 按列取最小值
r e s u l t j = min i v a l u e i j result_{j} = \min_{i}value_{ij} resultj=iminvalueij - print(value.min(axis=0))
4 3 1 - 按行取最小值
r e s u l t i = min j v a l u e i j result_{i} = \min_{j}value_{ij} resulti=jminvalueij - print(value.min(axis=1))
4 1
-
返回索引,二维及更高版本中的argmin和argmax函数
r e s u l t = a r g min i , j v a l u e i j result = arg\min_{i,j}value_{ij} result=argi,jminvalueij
- print(value.argmin())
5
注:np.unravel_index(value.argmin(). value.shape) == (1, 2)
r e s u l t = a r g min i v a l u e i j result = arg\min_{i}value_{ij} result=argiminvalueij- print(value.argmin(axis=0))
0 1 1 r e s u l t = a r g min j v a l u e i j result = arg\min_{j}value_{ij} result=argjminvalueij
- print(value.argmin(axis=1))
0 2 - print(value.argmin())
-
排序
value = [[4, 8, 5],
[9,3,1]]- print(value)
4 8 5 9 3 1 - print(value.sort(axis=0)) # 按列排序
4 3 1 9 8 5 - print(value.sort(axis=1)) # 按行排序
4 5 8 1 3 9
- print(value)
-
三维及以上
- print(np.arange(1, 9).reshape(2, 2, 2))
结果:
[[[1 2] [3 4]] [[5 6] [7 8]]]
-
表格
1 2 3 4 5 6 7 8 -
堆叠效果图
- print(np.arange(1, 9).reshape(2, 2, 2))