初始化代码
arr = np.zeros((2,2,2,2))
我的输入数组是
[[[[0.5, 1. ],
[0.6, 2. ]],
[[0. , 0. ],
[0. , 0. ]]],
[[[0. , 0. ],
[0. , 0. ]],
[[0. , 0. ],
[0. , 0. ]]]]
命令
np.where(arr > 0)
输出
(array([0, 0, 0, 0]),
array([0, 0, 0, 0]),
array([0, 0, 1, 1]),
array([0, 1, 0, 1]))
元组的大小
状态_0 *状态_1 *操作*新状态_1 *新状态_2
问题
答案 0 :(得分:4)
结果正确,您只是在阅读错误。第一行中的每个数字代表结果的第一个索引。第二行代表第二个索引。所以,
(array([0, 0, 0, 0]),
array([0, 0, 0, 0]),
array([0, 0, 1, 1]),
array([0, 1, 0, 1]))
对应于arr [0,0,0,0],arr [0,0,0,1]等处的点。
如果结果不是正方形,您可能会不太困惑。尝试以下示例:
np.where(arr==0)
(array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int64),
array([1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1], dtype=int64),
array([0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1], dtype=int64),
array([0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], dtype=int64))
如您所见,这些行不能对应一个单元的位置。