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 代表取每行数字加总