yus*_*suf 5 python arrays 3d numpy
我有一个形状为 (3024, 4032) 的二维 numpy 数组。
我有一个形状为 (3024, 4032, 3) 的 3D numpy 数组。
二维 numpy 数组用 0 和 1 填充。
3D numpy 数组填充了 0 到 255 之间的值。
通过查看 2D 数组值,我想更改 3D 数组中的值。如果 2D 数组中的值为 0,我会将 3D 数组中的所有 3 个像素值沿最后一个轴更改为 0。如果二维数组中的值为 1,我不会更改它。
我已经检查过这个问题,如何用另一个数组的值过滤一个 numpy 数组,但它适用于 2 个具有相同维度的数组。就我而言,尺寸是不同的。
如何在两个数组中应用过滤,在两个维度上具有相同的大小,但在最后一个维度上没有大小?
好的,我会回答这个问题以强调一个关于“缺失”维度的特殊性。让我们假设a.shape==(5,4,3)和b.shape==(5,4)
当索引,现有的尺寸是左对齐这就是为什么@ Divakar的解决方案a[b == 0] = 0作品。
当广播,现有尺寸正确对齐这就是为什么@侵略者Zim的a*b不起作用。您需要做的是a*b[..., None]在右侧插入一个可广播维度