对数组做基本的算术运算,将会对整个数组的所有元组进行逐一运算,并将运算结果保存在一个新的数组内,而不会破坏原始的数组
- 数组和向量之间的运算
- 数组和数组之间的运算
- 通用函数的使用
数组和向量之间的运算
1 | import numpy as np |
[20 40 50 80]
[0 1 2 3]
1 | c = a - b |
array([20, 39, 48, 77])
1 | b**2 # 每个元素进行平方 |
array([0, 1, 4, 9], dtype=int32)
1 | 10*np.sin(a) |
array([ 9.12945251, 7.4511316 , -2.62374854, -9.93888654])
1 | a < 40 |
array([ True, False, False, False])
1 | a[a>45] |
array([50, 80])
数组和数组之间的运算
1 | A = np.array( [[1,1], |
[[1 1]
[0 1]]
array([[2, 0],
[3, 4]])
四则运算
1 | print(A - B) |
[[-1 1]
[-3 -3]]
array([[2, 0],
[0, 4]])
向量点乘的实现
- dot
- @
1 | A.dot(B) |
array([[5, 4],
[3, 4]])
1 | np.dot(A,B) |
array([[5, 4],
[3, 4]])
1 | A@B |
array([[5, 4],
[3, 4]])
自加和自乘
1 | A += B |
array([[3, 1],
[3, 5]])
1 | A *= B |
array([[ 6, 0],
[ 9, 20]])
聚合函数
1 | A.mean() |
8.75
1 | A.max() |
20
1 | A.min() |
0
指定行列的聚合
1 | c = np.array(np.arange(12).reshape(3,4)) |
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
1 | c.sum(axis=1) # 行上求和 |
array([ 6, 22, 38])
1 | c.mean(axis=0) # 列上求均值 |
array([4., 5., 6., 7.])
1 | c.cumsum(axis=1) # 行上求累加 |
array([[ 0, 1, 3, 6],
[ 4, 9, 15, 22],
[ 8, 17, 27, 38]], dtype=int32)
sort函数
- Signature: np.sort(a, axis=-1, kind=‘quicksort’, order=None)
- axis : int or None, optional
Axis along which to sort. If None, the array is flattened before
sorting. The default is -1, which sorts along the last axis. - kind : {‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}, optional
Sorting algorithm. Default is ‘quicksort’.
1 | # 排序:默认是快排,从低到高 |
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
1 | d = np.array([[1,6,2],[6,1,3],[1,5,2]]) |
array([[1, 6, 2],
[6, 1, 3],
[1, 5, 2]])
1 | d.sort(axis=0) # 在行index上进行排序 |
array([[1, 1, 2],
[1, 5, 2],
[6, 6, 3]])
通用函数
- all
- any
- argmax
- argmin
- argsort
- average
- diff
1 | c |
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
1 | np.exp(c) # 求e的指数 |
array([[1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01],
[5.45981500e+01, 1.48413159e+02, 4.03428793e+02, 1.09663316e+03],
[2.98095799e+03, 8.10308393e+03, 2.20264658e+04, 5.98741417e+04]])
1 | np.sqrt(c) |
array([[0. , 1. , 1.41421356, 1.73205081],
[2. , 2.23606798, 2.44948974, 2.64575131],
[2.82842712, 3. , 3.16227766, 3.31662479]])
1 | np.add(c,c) # 两个c相加 |
array([[ 0, 2, 4, 6],
[ 8, 10, 12, 14],
[16, 18, 20, 22]])
1 | c * 2 |
array([[ 0, 2, 4, 6],
[ 8, 10, 12, 14],
[16, 18, 20, 22]])
1 | np.argsort(c, axis=0) # 返回的是排序后的索引:axis=0 行上进行排序 |
array([[0, 0, 0, 0],
[1, 1, 1, 1],
[2, 2, 2, 2]], dtype=int64)
1 | np.argsort(c, axis=1) # axis=1 : 列上进行排序 |
array([[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3]], dtype=int64)