我有一个5x8数组(例如)
[[ 43 153 39 40 157 116 78 165]
[108 182 42 244 28 67 59 176]
[ 44 81 236 229 102 32 176 237]
[143 218 78 77 237 194 135 251]
[247 37 143 89 100 188 156 206]]
我想把它写成一个10x4的数组。不是一个简单的整形,而是我想把前两列0和1保持原样。第2列和第3列我想把它们写成行,放在数组的底部。第4列和第5列会移动到第2列的原始位置,最后,第6和第7列将作为行移动到第4和第5列下面。结果如下所示:
[[ 43 153 157 116]
[108 182 28 67]
[ 44 81 102 32]
[143 218 237 194]
[247 37 100 188]
[ 39 40 78 165]
[ 42 244 59 176]
[236 229 176 237]
[ 78 77 135 251]
[143 89 156 206]]
我试着用新的形状创建一个新的零数组,并将这些零添加到新数组中,但遇到了一堆错误消息,例如“operands cannot be broadcast together with shapes(10,4)(5,2)”有没有一种理想的方法来做到这一点?对于numpy和数组切片来说有点陌生,我如何以这种格式将内容写入新数组。
设置这个问题的正确方法是什么?我是创建一个空数组,还是写一个新数组,然后在操作行和列时重塑形状?我已经简化了这个例子,但我实际上想对灰度图像这样做。
1条答案
按热度按时间rggaifut1#
与输入所有数字不同,我将创建一个(5,8)数组,如下所示:
有很多种方法可以将数组分成块,然后重新排列它们。一种直接的方法是使用
np.block
并连接4个两列块。这可能不是最通用的,但很容易写出:split
也可以将其划分为以下4个块:下面是一个工作的整形和转置序列:
我经过一些反复试验,在以前这种重组经验的帮助下,达到了这个目的。