将(行,列)作为参数添加到elementwise numpy函数?

2024-04-26 09:15:54 发布

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

Numpy非常自然地进行元素操作。不过,在编写函数时,我通常也想知道元素的位置,例如:

def neighbor_count(arr, row, col):
 hood = arr[row-1:row+1, col-1, col+1]
 return np.sum(hood)-arr[row,col]

我可以创建一个嵌套for循环:

for (i, row) in enumerate(arr[1:-1]):
 for (j, col) in enumerate (row[1:-1]):
  c = neighbor_count(arr, i+1, j+1)

但那感觉就像是放弃了,回到了我在c++中的工作方式。你知道吗

有什么灵丹妙药吗?你知道吗


Tags: 函数innumpy元素forreturndefcount
1条回答
网友
1楼 · 发布于 2024-04-26 09:15:54

您需要^{},它的工作原理与enumerate类似,但用于ndarray结构。你知道吗

我不能对您的特定用例提供一个确切的答案,因为还不完全清楚您是如何组合结果值的,但基本思想是这样的。你知道吗

for (r, c), i in np.ndenumerate(arr):
  do_something()

请注意,ndenumerate返回一个迭代器,因此您使用的所有itertools功能都应该使用它。你知道吗

相关问题 更多 >