如何使用numpy创建元组坐标矩阵,然后将函数应用于每个元素?

时间:2018-02-11 23:13:24

标签: python numpy

我不确定这是否可以在numpy中进行,但我想要的是创建一个坐标元组。

例如,对于3x3矩阵,我希望矩阵为:

[[(0,0), (0,1), (0,2)],
 [(1,0), (1,1), (1,2)],
 [(2,0), (2,1), (2,2)]]

因为最终我想将坐标传递给函数并创建func结果的矩阵

因此,如果调用函数myfunc的类型为(i,j) -> k,我希望结果矩阵看起来像这样

[[myfunc(0,0), myfunc(0,1), myfunc(0,2)],
 [myfunc(1,0), myfunc(1,1), myfunc(1,2)],
 [myfunc(2,0), myfunc(2,1), myfunc(2,2)]]

我看过像np.meshgrid这样的解决方案:

i_indices, j_indices = np.meshgrid(np.arange(3),np.arange(3),indexing='ij')

但是我仍然陷入困境b / c我不知道如何在没有for循环的情况下迭代那些坐标矩阵i_indexj_index来创建我想要的结果矩阵。

基本上这可能是numpy吗?如果是这样,怎么样?或者必须使用for循环?

1 个答案:

答案 0 :(得分:0)

Aand我意识到我只需要使用np.vectorize

i_indices, j_index = np.meshgrid(np.arange(3),np.arange(3),indexing='ij')   
myfunc = // some lambda function
v_myfunc = np.vectorize(myfunc)    
result_matrix = v_myfunc(i_index, j_indices)