理解多维数组的np.where

2024-06-27 09:36:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解numpy's example of the multidimensional array where()函数:

np.where([[True, False], [True, True]],
...          [[1, 2], [3, 4]],
...          [[9, 8], [7, 6]])
array([[1, 8],
       [3, 4]])

条件[[True, False], [True, True]]如何对应于输出[[1, 8],[3, 4]]


Tags: ofthe函数numpyfalsetrueexamplenp
1条回答
网友
1楼 · 发布于 2024-06-27 09:36:12

您可以像下面这样使上面的代码更具可读性

cond = [[True, False], [True, True]]
arr1 = [[1, 2], [3, 4]]
arr2 = [[9, 8], [7, 6]]

np.where(cond, arr1, arr2)

它可以在句子中描述为,对于cond的每个元素,如果元素为True,则从arr1取相应的元素,否则从arr2取相应的元素

所以基本上它是在做元素方面的arr1 if cond else arr2。下面是如何使用循环来查看它

for sub_cond, sub_arr1, sub_arr2 in zip(cond,arr1,arr2):
    for c, a1, a2 in zip(sub_cond, sub_arr1, sub_arr2):
        print(f"{a1} if {c}=True else {a2}")
        print(a1 if c else a2)

结果

1 if True=True else 9
1
2 if False=True else 8
8
3 if True=True else 7
3
4 if True=True else 6
4

相关问题 更多 >