import numpy as np
维度操作
np.concatenate()
作用:将多个数组沿着指定轴进行连接 (类似torch.cat())
- 连接的数组维度要一致,并且除了指定的连接轴之外,其他轴具有相同的形状
- 连接轴不能超过数组的维度
np.concatenate((a1, a2,...), axis=0)
以二维数组的合并为例: H ∗ W H*W H∗W
import numpy as np
a0 = [[1, 2],[3, 4]]
b0 = [[5, 6],[7, 8],[9, 10]]
# 这两个二维数组行数不同,列数相同,因此只能进行 行合并
res0 = np.concatenate((a0, b0), axis=0)
print(res0)
[[ 1 2]
[ 3 4]
[ 5 6]
[ 7 8]
[ 9 10]]
a1 = [[1, 2],[3, 4]]
b1 = [[5, 6, 7],[8, 9, 10]]
# 这两个二维数组列数不同,行数相同,因此只能进行 列合并
res1 = np.concatenate((a1, b1), axis=1)
print(res1)
[[ 1 2 5 6 7]
[ 3 4 8 9 10]]
以三维数组合并为例: C ∗ H ∗ W C*H*W C∗H∗W
axis=0
代表两个三维数组的channel
轴的合并,将两个 2 ∗ 2 ∗ 3 2*2*3 2∗2∗3维度的数组合并为 4 ∗ 2 ∗ 3 4*2*3 4∗2∗3
a5 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
a6 = np.array([[[13, 14, 15], [16, 17, 18]], [[19, 20, 21], [22, 23, 24]]])
result3 = np.concatenate((a5, a6), axis=0)
print(result3)
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]
[[13 14 15]
[16 17 18]]
[[19 20 21]
[22 23 24]]]
axis=1
代表两个三维数组的height
轴(行)的合并,将两个 2 ∗ 2 ∗ 3 2*2*3 2∗2∗3维度的数组合并为 2 ∗ 4 ∗ 3 2*4*3 2∗4∗3
result3 = np.concatenate((a5, a6), axis=1)
print(result3)
[[[ 1 2 3]
[ 4 5 6]
[13 14 15]
[16 17 18]]
[[ 7 8 9]
[10 11 12]
[19 20 21]
[22 23 24]]]
axis=2
代表两个三维数组的width
轴(列)的合并,将两个 2 ∗ 2 ∗ 3 2*2*3 2∗2∗3维度的数组合并为 2 ∗ 2 ∗ 6 2*2*6 2∗2∗6
result3 = np.concatenate((a5, a6), axis=2)
print(result3)
[[[ 1 2 3 13 14 15]
[ 4 5 6 16 17 18]]
[[ 7 8 9 19 20 21]
[10 11 12 22 23 24]]]
np.reshape()
- 三维数组展为一维数组顺序
import numpy as np
# 创建一个三维数组
a = np.array([[[1, 2], [3, 4]],
[[5, 6], [7, 8]],
[[9, 10], [11, 12]]])
# 将三维数组重塑为一维数组,默认顺序(C风格)
b = np.reshape(a, -1)
print(b)
# 输出:[ 1 2 3 4 5 6 7 8 9 10 11 12]