使用numpy生成数字
生成的类型是ndarray类型
t1 = np.array([1,2,3,4,5]) print(t1,type(t1)) # 类型为ndarray t2 = np.array(range(10)) print(t2) t3 = np.arange(10) # 相当于array+range print(t3,t3.dtype) # dtype 可以查看数组内的数据类型 t4 = np.arange(10,dtype="f2") # 制定数据类型 print(t4.dtype) t5 = np.array([random.random() for i in range(10)]) # 10个小数 print(t5) t6 = np.round(t5,2) # 取小数后两位 print(t6)
查看数组的形状(几行几列)
一维数组
a1 = np.arange(12) print(a1) a1.shape
二维数组
a2 = np.array([[1,2,3],[4,5,6]]) print(a2) a2.shape
三维数组
a3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]) print(a3) a3.shape
改变数组的形状
b1 = np.arange(12) b1.reshape(3,4) # 将原数组形状变成3行4列的二维数组
b2 = np.arange(24).reshape((2,3,4)) # 2表示块儿数 (3,4)表示每一块的形状 print(b2) b2.reshape(4,6) # 将b2变形为4行6列的2维数组 reshape是有返回值的 不会改变b2原来的数据 # 将b2变形为1维数的两种方式 b2.flatten() b2.reshape((24,))
数组和数字进行计算(广播机制) c1 = np.arange(12) print(c1) # (广播机制) 当我们把数组与数字进行计算的时候 它会把计算的过程应用到数组的每一个数字 然后分别计算 c1+2 [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] c1*2 [ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22] c1/2 [0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5] c1/0 [nan, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf]
数组与数组之间的计算(形状相同) c2 = np.arange(24) c3 = np.arange(100,124) print(c2,c3) # 当数组中的数据长度相同时 # 两个数组中的数据一一对应进行计算 c2+c3 [100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146] c2*c3 [ 0, 101, 204, 309, 416, 525, 636, 749, 864, 981, 1100, 1221, 1344, 1469, 1596, 1725, 1856, 1989, 2124, 2261, 2400, 2541, 3 2684, 2829] c2/c3 [0. , 0.00990099, 0.01960784, 0.02912621, 0.03846154, 0.04761905, 0.05660377, 0.06542056, 0.07407407, 0.08256881, 0.09090909, 0.0990991 , 0.10714286, 0.11504425, 0.12280702, 0.13043478, 0.13793103, 0.14529915, 0.15254237, 0.15966387, 0.16666667, 0.17355372, 0.18032787, 0.18699187]
# 当他们在某一维度形状一样时是可以进行计算的 n1 = np.arange(12).reshape((4,3)) n2 = np.arange(4).reshape((4,1)) print(n1) print(n2) n1+n2 # n1与n2行数相同 array([[ 0, 1, 2], [ 4, 5, 6], [ 8, 9, 10], [12, 13, 14]])