形状
reshape只是返回改变形状后的预览状态,如使用需赋值。
resize方法的返回结果为空,但是它却真正的改变了组数的形状。
降维
# 在默认排序的情况下,优先按照数组的行顺序,逐个将元素将至一维。 print(arr.ravel()) print(arr.reshape(-1)) print(arr.flatten()) # 如果我们需要按照列的顺序把数组降到一维的话,需要把参数order设置成为"F"。 print(arr.ravel(order='F')) print(arr.reshape(-1, order='F')) print(arr.flatten(order='F'))
import numpy as np arr = np.array([[1,10,100], [2,20,200], [3,30,300]]) print(arr) # flatten不会改变元素值 print(arr.flatten()) arr.flatten()[0]=2000 print(arr) # ravel方法会改变元素的值 print(arr.ravel()) arr.ravel()[0]=1000 print(arr) # reshape方法会改变元素的值 print(arr.reshape(-1)) arr.reshape(-1)[0]=3000 print(arr)
堆叠
import numpy as np arr1 = np.array([[1, 10, 100], [2, 20, 200], [3, 30, 300]]) arr2 = np.array([1, 2, 3]) #按行堆叠 print(np.vstack([arr1, arr2])) print(np.row_stack([arr1, arr2])) #按列堆叠 arr3 = np.array([[5], [6], [7]]) print(arr3) print(np.hstack([arr1, arr3])) print(np.column_stack([arr1, arr3]))
多个数组横向堆叠时,要保证行数相同,纵向合并,则要保证列数相同。
取子集
import numpy as np arr1 = np.array([23, 12, 25]) arr2 = np.array([21, 15, 23]) # 取子集运算 # 取出arr1中元素大于arr2中的元素. 对应位置比较 print(arr1[arr1 > arr2]) # [23 25] # 取出arr1中元素大于24中的元素 print(arr1[arr1 > 24]) # [25] # 将arr1中所有大于24的元素改为0 print(np.where(arr1 > 24, 0, arr1)) # [23 12 0] # 这里打印的是一个列表 print(list(0 if x > 24 else x for x in arr1)) print(np.where(arr2 > 16, 1, 0)) # [1 0 1]
广播运算
矩阵形状不同的时候,自动扩展广播。
统计学
方差np.var(arr,axis)
标准差np.std(arr,axis)
来源:https://www.cnblogs.com/xuehuiping/p/12273193.html