numpy 中的reshape,flatten,ravel 數據平展,多維數組變成一維數組
import numpy as np
使用array對象
arr1=np.arange(12).reshape(3,4)
print(arr1)
print(type(arr1))
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
<class 'numpy.ndarray'>
a=arr1.flatten()
# 默認參數order=C,按照行進行展平;order=F,按照列進行展平,交叉展平;
#A 或K參數用的不多,顧不變多記,到時候找到會用即可
a[2]=1000
print(arr1) # arr1 並沒有改變,flatten 返回的是copy
a
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
array([ 0, 1, 1000, 3, 4, 5, 6, 7, 8, 9, 10,
11])
arr1=np.arange(12).reshape(3,4)
b=arr1.reshape(-1) # b=arr1.reshape((-1)) 等同的效果意義 ,
b[2]=1000
print(arr1)# 返回的是視圖view
[[ 0 1 1000 3]
[ 4 5 6 7]
[ 8 9 10 11]]
arr1=np.arange(12).reshape(3,4)
c=arr1.ravel()
c
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
c[2]=10001
arr1 # 返回的是視圖view
array([[ 0, 1, 10001, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
arr1=np.arange(12).reshape(3,4)
arr1.resize((4,3)) # 無返回值,即會對原始多維數組直接進行修改,也就是不能賦值
arr1
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
對matrix對象進行操作
# 使用matrix對象的時候,返回的仍是matrix,得不到想要的結果,不過該matrix仍然可以使用numpy中的一些方法對其操作,比如sum,min,max等等
d=np.matrix(np.arange(12).reshape(3,4))
d
matrix([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
d.flatten()#
matrix([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])