logo

Shellblock

【Python】变换ndarry的状态

2021-03-31 Views ndarry | Python385字2 min read

1. 设置ndarry形状

(1) reshape

import numpy as np
arr = np.arange(12)  #创建一维ndarray
print(arr)
arr1 = arr.reshape(3,4)  #设置ndarry的维度
print(arr1)
reshape

(2) resize

arr.resize(2,6)
print(arr)
resize

(3) shape

arr.shape = (3,4)
print(arr)
shape

2. 展平ndarry

(1) ravel

arr=np.arange(12).reshape(3,4)   #创建二维ndarray
print(arr)

print(arr.ravel())
ravel

(2) flatten

print(arr.flatten())        #横向展开

print(arr.flatten('F'))     #纵向展开
flatten

3. 组合ndarry

(1) hstack

arr1 = np.arange(12).reshape(3,4)
print(arr1)

arr2 = arr1*3
print(arr2)

print(np.hstack((arr1,arr2)))   #横向组合
hstack

(2) vstack

print(np.vstack((arr1,arr2)))   #纵向组合
vstack

(3) concatenate

concatenate函数既能实现横向组合,又能巩固实现纵向组合。

当参数axis=1时为横向组合,当参数axis=0时为纵向组合。

print(np.concatenate((arr1,arr2),axis=1))   #横向组合
print(np.concatenate((arr1,arr2),axis=0))   #纵向组合
concatenate

(4) dstack 深度组合

即对一系列ndarry沿着纵轴方向进行层叠组合,类型于Python的内置函数zip

print(np.dstack((arr1,arr2)))

arr3 = []
for x,y in list(zip(arr1,arr2)):
    arr3.append(list(zip(x,y)))
arr3 = np.array(arr3)
print(arr3 == np.dstack((arr1,arr2)))
dstack 深度组合

4. 分割ndarray

(1) hsplit

横向分割

(2) vsplit

纵向分割

(3) split

split函数也可以实现横合和纵向分割。

当参数axis=1时为横向分割,当参数axis=0时为纵向分割。

(4) dsplit 深度分割

使用dsplit函数可以实现ndarry的深度分割,但被分割的ndarry必须是三维ndarry,且分割的数目必须为shape属性中下标为2的值的公约数。

arr = np.arange(12).reshape(2,2,3)
print(arr)

print(np.dsplit(arr,3))
dsplit 深度分割
EOF