我有以下形状为(2,6,3)的数组
[[[ 10. 0. 0. ]
[ 20. 0. 0. ]
[ 60. 0. 0. ]
[ 40. 0. 0. ]
[ 20. 0. 0. ]
[ 80. 0. 0. ]]
[[ 70. 0. 0. ]
[ 90. 0. 0. ]
[ 20. 0. 0. ]
[ 50. 0. 0. ]
[ 80. 0. 0. ]
[ 10. 0. 0. ]]]
如果第一个值> = 50,我试图用[1 1 1]替换整个数组。 如果第一个值是<50,则整个数组应为[0 0 0]
[[[ 0. 0. 0. ]
[ 0. 0. 0. ]
[ 1. 1. 1. ]
[ 0. 0. 0. ]
[ 0. 0. 0. ]
[ 1. 1. 1. ]]
[[ 1. 1. 1. ]
[ 1. 1. 1. ]
[ 0. 0. 0. ]
[ 1. 1. 1. ]
[ 1. 1. 1. ]
[ 0. 0. 0. ]]]
我只能替换单个值,而不能替换完整的值。
关于如何做到这一点的任何想法
答案 0 :(得分:3)
这是基于比较结果从包含[0,0,0]
和[1,1,1]
的数组中建立索引的一种方法:
b = np.array([[0,0,0], [1,1,1]])
b[(a[:,:,0] >= 50).view('i1')]
array([[[0, 0, 0],
[0, 0, 0],
[1, 1, 1],
[0, 0, 0],
[0, 0, 0],
[1, 1, 1]],
[[1, 1, 1],
[1, 1, 1],
[0, 0, 0],
[1, 1, 1],
[1, 1, 1],
[0, 0, 0]]])