python - numpy 3d数组中的for循环
问题描述
我想采用这样的基本 3d 数组:
b = np.arange(1,101).reshape(4,5,5)
b
然后我想拿第一个索引,像楼梯一样向下工作。
b1 = [b[0:,0,0],b[0:,1,1],b[0:,2,2],b[0:,3,3],b[0:,4,4]]
b1 = np.asarray(b1)
b1 = np.transpose(b1)
b1
上面的代码看起来不正确,我宁愿使用循环。这是我到目前为止所拥有的:
for i in range(0,5):
b2 = b[0:,i,i]
b2 = np.asarray(b2)
b2 = b2.reshape(4,1)
print(b2)
我对上述输出的问题是将每次迭代放入一个垂直数组中,然后移至下一个。如何使上述代码输出类似于我的第二个代码块?
抱歉格式不佳,stackoverflow 新手,刚开始学习代码/numpy。
谢谢!
解决方案
另一种方法(大概在你的楼梯上,b
最后两个维度必须是方形):
c = b[:,np.arange(b.shape[1]),np.arange(b.shape[2])]
b2 = c.T.reshape(c.shape+(1,))
输出:
[[[ 1]
[ 26]
[ 51]
[ 76]
[ 7]]
[[ 32]
[ 57]
[ 82]
[ 13]
[ 38]]
[[ 63]
[ 88]
[ 19]
[ 44]
[ 69]]
[[ 94]
[ 25]
[ 50]
[ 75]
[100]]]
推荐阅读
- javascript - 如何限制使用类型中的键?
- android - react-native-image-crop-picker 如何选择平方图像?
- reactjs - 从反应js中的数组列表中取消选择单选按钮
- python - 如何修复python中的unicode问题(UnicodeEncodeError)
- powershell - 从类调用 [IO.Compression.ZipFile] 的 PowerShell 脚本的 ps2exe 转换后找不到类型 [IO.Compression.ZipFile]
- excel - VB for Excel - 如何控制工作表中数据集之间的空行数?
- java - 具有 matchparent 属性的布局权重
- dolphindb - 如何从集合中删除一些元素?
- php - 有没有一种方法可以将关联数组的数组分解为一个数组而不会丢失 PHP 中的键?
- javascript - Discord.js 不执行 client.on("message")