Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否将(行、列)作为参数添加到elementwise numpy函数?_Python_Numpy - Fatal编程技术网

Python 是否将(行、列)作为参数添加到elementwise numpy函数?

Python 是否将(行、列)作为参数添加到elementwise numpy函数?,python,numpy,Python,Numpy,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]):

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++中。

有什么灵巧的Pythonic解决方案吗?

你想要的,它的工作原理类似于
enumerate
但不适用于
ndarray
结构

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

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

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

也许您应该添加一个带有预期结果的小示例。例如,
np.random.seed(0);a=np.random.randint(0,5,25)。重塑([5,5])
,然后使用该数组来说明您试图在包含预期结果的情况下实现的目标。是否希望:
col-1:col+1
hood
是否应该是一组(3,3)元素围绕(包括)
arr[row,col]
?而
[1:-1]
的目的是避免跑完终点?有一些移动窗口或图像卷积方法更快。请显示完整的代码、足够的输入和预期的输出。你的问题太零碎,无法给出可靠的有用答案。