subst1 = numpy.array([2, 2, 2, 2])
subst2 = numpy.array([3, 3, 3, 3])
a = numpy.array([[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0,]])
b = numpy.where(0==a, subst1, subst2)
结果:
>>> a
array([[1, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]])
>>> b
array([[3, 2, 2, 2],
[2, 2, 2, 2],
[2, 2, 2, 2]])
我想要的:
array([[[3,3,3,3], [2,2,2,2], [2,2,2,2], [2,2,2,2]],
[[2,2,2,2], [2,2,2,2], [2,2,2,2], [2,2,2,2]],
[[2,2,2,2], [2,2,2,2], [2,2,2,2], [2,2,2,2]]])
我知道这不起作用,因为subst*
数组是按元素使用的。
这可能是不可能的,替代解决方案也是受欢迎的。
我 * 想 * 使用numpy数组作为替代,我知道类似的事情可以做,如果我用bytes
替换subst*
数组。我想要一个高效的解决方案,我这样做是为了与另一个解决方案进行性能比较-它有自己的问题。
我猜这将使一个三维阵列出一个二维,但我不确定。
2条答案
按热度按时间h7wcgrx31#
广播:
输出:
drnojrws2#
您可以用途:
输出: