python - 迭代时如何获取 2D Numpy 数组中的位置?

标签 python arrays python-3.x numpy numpy-ndarray

我有一个 2D Numpy 数组,代表我用 Python3.7 制作的基于图 block 的游戏中的关卡 map 。我的数组有 50 行 x 50 列,每个值都是代表 Sprite 类型(各种墙壁部件、地板等)的整数。当我迭代数组并找到一个墙 Sprite (例如)时,我想知道该值的行号和列号,以便我可以直接引用它。

这看起来很简单,但我似乎找不到正确的 Numpy 函数来迭代 2D 数组并返回位置[row, col]它找到的每一个。然后,我可以使用数组位置计算它在屏幕上的相对位置,然后使用 .colliderect() 测试碰撞。

编辑:为了更清楚起见,我添加了这样一个事实:我需要将数组中的每个整数值与墙壁部件(也是整数)的列表进行比较,以及它是否在列表中,返回数组位置。

TL;DR 如何迭代 Numpy 2darray 并返回每个匹配项的[row, col] 而不是值?

最佳答案

只需使用np.argwhere

示例:

>>> import numpy as np
>>> a = np.zeros((50, 50))
>>> a[3, 4] = 1
>>> a[4, 5] = 1
>>> for i, j in np.argwhere(a == 1): print(i, j)
... 
(3, 4)
(4, 5)

(上面的示例是使用 python 2 运行的,因此显示了输出中的元组,但在其他方面与 python 3 中完全相同。)

关于python - 迭代时如何获取 2D Numpy 数组中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62985962/

相关文章:

以 Python 方式转换字典

python - 使用 python 获取 instagram 关注者列表

python - yaxis.set_major_formatter 中的 f 字符串

java - 比较二维数组中的 2 个元素

python-3.x - 如何使用 Foxglove WebSocket 服务器显示模型?

python - 将缺失的月份添加到具有空值的数据框中

python - django如何计算数据库中某个类的对象数量

python - 如何允许用户删除 django allauth 中的帐户?

javascript - 从 JSON 数组中拼接或删除元素列表,仅删除偶数项而不是匹配项

python - numpy ndarray 中匹配行之间的余弦相似度