将简单的二维数组重塑为另一个数组时遇到问题。 让我们假设矩阵:
[[4 1 2 1 2 4 1 2 4]
[2 3 0 3 0 2 3 0 2]
[5 5 1 5 1 5 5 1 5]
[6 6 6 6 6 6 6 6 6]]
我想做的是将其重塑为(12,3)矩阵,但是使用(4,3)块。我的意思是要得到像这样的矩阵:
[[4 1 2
2 3 0
5 5 1
6 6 6
1 2 4
3 0 2
5 1 5
6 6 6
1 2 4
3 0 2
5 1 5
6 6 6]]
我已经强调了用额外的换行符来切掉这个矩阵的“想法”。 我已经尝试了numpy重塑(具有所有可用的order参数值),但仍然得到带有“混合”值的数组。
答案 0 :(得分:0)
您始终可以手动执行此操作以自定义形状:
import numpy as np
data = [[4, 1, 2, 1, 2, 4, 1, 2, 4],
[2, 3, 0, 3, 0, 2, 3, 0, 2],
[5, 5, 1, 5, 1, 5, 5, 1, 5],
[6, 6, 6, 6, 6, 6, 6, 6, 6]]
X = np.array(data)
Z = np.r_[X[:, 0:3], X[:, 3:6], X[:, 6:9]]
print(Z)
收益
array([[4, 1, 2],
[2, 3, 0],
[5, 5, 1],
[6, 6, 6],
[1, 2, 4],
[3, 0, 2],
[5, 1, 5],
[6, 6, 6],
[1, 2, 4],
[3, 0, 2],
[5, 1, 5],
[6, 6, 6]])
请注意特殊的np.r_
运算符,该运算符将行(第一轴)上的数组连接起来。它只是np.concatenate
的方便别名。