Python Numpy数组索引问题

Python Numpy数组索引问题,python,arrays,numpy,Python,Arrays,Numpy,我在理解Numpy数组中的索引时遇到了一个小问题。我认为一个简单的例子最好能让你了解我在做什么。 因此,首先我创建一个零数组,其大小与我要填充的大小相同: x = range(0,10,2) y = range(0,10,2) a = zeros(len(x),len(y)) 这将给我一个零数组,它是5X5。现在,我想用一个相当复杂的函数来填充数组,我无法使用网格。我的问题是我想迭代为: for i in xrange(0,10,2): for j in xrange(0,10,2):

我在理解Numpy数组中的索引时遇到了一个小问题。我认为一个简单的例子最好能让你了解我在做什么。 因此,首先我创建一个零数组,其大小与我要填充的大小相同:

x = range(0,10,2)
y = range(0,10,2)
a = zeros(len(x),len(y))
这将给我一个零数组,它是5X5。现在,我想用一个相当复杂的函数来填充数组,我无法使用网格。我的问题是我想迭代为:

for i in xrange(0,10,2):
    for j in xrange(0,10,2):
          .........
    "do function and fill the array corresponding to (i,j)"
然而,现在我想要的是[2,10]是2和10的函数,但是2和10的函数的索引应该是[1,4]或其他

再说一次,也许这是最基本的,我看了一遍文件,发现自己不知所措

编辑: 最后,我尽可能多地进行矢量化,并编写了Cython中无法实现的模拟循环。此外,我还使用Joblib来并行化操作。我将结果存储在一个列表中,因为并行运行时数组没有正确填充。然后,我使用Itertools将列表拆分为单独的结果,并使用Pandas组织结果。
感谢您提供的所有帮助

为您完成任务并保持良好绩效提供的一些提示:

- avoid Python `for` loops
- create a function that can deal with vectorized inputs
例如:

def f(xs, ys)
    return x**2 + y**2 + x*y
您可以将
xs
ys
作为数组传递,操作将按元素进行:

xs = np.random.random((100,200))
ys = np.random.random((100,200))

f(xs,ys) 

您应该阅读更多有关的内容,以便更好地了解阵列的操作是如何工作的。这将帮助您设计一个能够正确处理数组的函数。

首先,如果缺少一些带零的括号,则第一个参数应该是元组:

a = zeros((len(x),len(y)))
然后,表中相应的索引为i/2和j/2:

for i in xrange(0,10,2):
    for j in xrange(0,10,2):
        # do function and fill the array corresponding to (i,j)
        a[i/2, j/2] = 1

但我支持Saullo Castro,你应该尝试将你的计算矢量化。

谢谢!我看了一下广播,我正在尝试将功能矢量化,我同意这将显著提高性能。但函数的一部分本质上是迭代的,这使得我很难对其进行矢量化。如果您能提供更多关于函数的详细信息,那就太好了,也许您可以获得更好的支持…,另外,看看Cython,它可以显著改善循环所需的功能。。。