np.where在不带掩码数组或任何第二个参数的二维数组上

2024-07-04 08:31:17 发布

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

我正在检查一段代码片段,有一段代码如下

z = [[True, False, True],[True, True, True],[False, False, False]]
xz, yz = np.where(z)
print(xz)
print(yz)

这是回报

[0 0 1 1 1]
[0 2 0 1 2]

如果我

z = [[True, False, True],[True, True, True]]

我会得到和你一样的结果

[0 0 1 1 1]
[0 2 0 1 2]

当我

z = [[True, False],[True, True]]

结果是

[0 1 1]
[0 0 1]

我无法找出它在做什么,这是在github上的SynthText repo中介绍的。 如果有人能帮助我了解它的功能,我将不胜感激?它的用途是什么


Tags: 代码功能githubfalsetruenprepowhere
2条回答

如果仔细阅读关于^{}的文档,您会发现,如果只提供条件参数,它与np.asarray(condition).nonzero()等价,因此行为归结为^{}

>>> z = np.array([[True, False], [True, True]])

这个数组中有三个非零元素,索引为:[0, 0][1, 0][1, 1]

>>> np.nonzero(z)
(array([0, 1, 1], dtype=int64), array([0, 0, 1], dtype=int64))

元组的第一个元素是每个非零元素([0, 1, 1])的第一个索引,元组的第二个元素是每个非零元素([0, 0, 1])的第二个索引

如果考虑二维矩阵,如矩阵,^ {< CD1>}有助于得到元素的真或非零指数。二维数组索引有两个组件,分别对应于数组中的每个元素[rows' number, columns' number]。 第一个变量,即示例中的xz显示True或非零元素的行数,yz显示相应列数。以下代码有助于理解:

xz = [1th-x, 2nd-x, 3rd-x]
yz = [1th-y, 2nd-y, 3rd-y]
nonzero_indices = [[1th-x, 1th-y], [2nd-x, 2nd-y], [3rd-x, 3rd-y]]

使用以下代码将获得每个真或非零元素的索引,如上面代码中的nonzero_indices所示:

print(np.transpose(np.where(z)))

这将给[[0 0] [1 0] [1 1]]
希望对你有帮助

相关问题 更多 >

    热门问题