例:一维数组变二维数组
x = np.array([1, 2, 9, 4, 5, 6, 7, 8])
print(x.shape) # (8,) 获取维度
x.shape = [2, 4] #修改维度
print(x)
# [[1 2 9 4]
# [5 6 7 8]]
例:二维数组平铺化
import numpy as np
x = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35]])
y = x.flat
print(y)
#
for i in y:
print(i, end=' ')
# 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
y[3] = 0
print(end='\n')
print(x)
# [[11 12 13 0 15]
# [16 17 18 19 20]
# [21 22 23 24 25]
# [26 27 28 29 30]
# [31 32 33 34 35]
np.squeeze(arrayname[,axis=None])表示把shape中为1的维度删除;axis用于指定需要删除的维度,且该维度必为1。
注意:维度(一个number)指的是数组是几维,而不是形状(形状是m×n×k…)
np.concatenate([arrayname1,arrayname2,……],axis=0,out=None)表示对数组进行拼接;若原数组的维数相同,则拼接后维度不变;当参数axis=1时,表示按行拼接,默认情况下axis=0,表示按列拼接;拼接的数组维度必须相同。见下图例子
np.stack(arraynamen,axis=0,out=None)表示沿着新的轴加入一系列数组;并且维度会增加!其实也是进行数组的拼接;axis表示增加的新维度位置,默认为0,表示增加在第一维。
下图解释:x/y都是2*3的,x与y使用stack拼接必定会增加一个维度(该新维度的维数是2,由于是两个数组拼接);当x=0时,新的维度增加在第一个维度上,同理x=2,增加在第二个维度上,x=3则增加在第三个维度上;
x = np.array([[[11, 12, 13, 14],
[16, 17, 18, 19],
[21, 22, 23, 24]],
[[1, 2, 3, 4],
[6, 7, 8, 9],
[2, 2, 2, 2]],
[[111, 112, 113, 114],
[116, 117, 118, 119],
[211, 212, 213, 214]]])#3*3*4
y = np.split(x, [1, 3])
print(y)
[array([[[11, 12, 13, 14],
[16, 17, 18, 19],
[21, 22, 23, 24]]]), #x[0]
array([[[ 1, 2, 3, 4],
[ 6, 7, 8, 9],
[ 2, 2, 2, 2]],
[[111, 112, 113, 114],
[116, 117, 118, 119],
[211, 212, 213, 214]]]), #x[1],x[2]
array([], shape=(0, 3, 4), dtype=int32 #x[3]其实为空
]