import Numpy as np
arr = [0,1,2,3,4,5,6,7,8,9]
np.max
np.min
np.log
np.arange(0,11) #生成0-10的([0,1,2,3,4,5,6,7,8,9,10])
numpy list 和 python list的不同
#批量设置list中元素 broadcasting
arr[0:5] = 100
out: [100,100,100,100,100,5,6,7,8,9,10]
只看array中部分元素
slice_of_arr = arr[0:6]
out:
arr([0.1.2.3.4.5])
批量设置
slice_of_arr[:] = 99
out:
arr([99,99,99,99,99,99])
注意,此时也更改了原始array中的元素,slice_of_arr只是pointer, 不是一个新的copy. 因为numpy一般都在处理大批量数据,为了节省空间一般默认不是copy
in:arr
out: array([99,99,99,99,99,99,6,7,8,9,10])
如果需要copy则要单独设置
arr_copy = arr.copy()
matrics indexing 2种方式
- [row, col] 2. [row][col]
import numpy as np
mat = np.array([[1,2,3],[4,5,6],[7,8,9]])
mat
out:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
mat[1][1]
out:5
mat[1,1]
out:5
mat[2]
out:array([7, 8, 9])
获取matric里面某一行的部分元素
mat[:2, 1:]
out : array([[2, 3],
[5, 6]])
CONDITIONAL SELECTION
arr = np.arange(1,11)
arr
out:array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
arr > 4
out:
array([False, False, False, False, True, True, True, True, True, True])
bool_arr = arr > 4
arr[bool_arr]
out:
array([ 5, 6, 7, 8, 9, 10])
OR
arr[arr>4]
out:
array([ 5, 6, 7, 8, 9, 10])
创建矩阵
arr = np.arange(0,9).reshape(3,3)
arr
out:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
np.eye(3)
out:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
#随机产生一个0-1之间的数字
np.random.rand(1)
#随机产生25个正态分布
np.random.randn(25)
matric 矩阵中的行和列分别相加
mat = np.arange(1,26).reshape(5,5)
mat
out:
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]])
行相加:
mat.sum(axis=0)
out:
array([55, 60, 65, 70, 75])
列相加:
mat.sum(axis=1)
out:
array([ 15, 40, 65, 90, 115])
axis = 0 代表取列数字加总, 1 代表取每行数字加总