【发布时间】:2015-09-15 18:57:32
【问题描述】:
我有 2D numpy 数组,我需要两个嵌套循环来迭代它的每个元素。我想对嵌套循环进行一些矢量化,但我一直收到错误提示,
j= np.arange (0,x.shape [1])
IndexError: tuple index out of range
这些是原始的嵌套循环:
for k in range(A.shape[0]):
for j in range(A.shape[1]):
A[k,j] = method1(x[k],x[j],a,c0,c1)
这就是我尝试根据这个答案进行矢量化的方法,https://codereview.stackexchange.com/questions/17702/python-numpy-running-15x-slower-than-matlab-am-i-using-numpy-effeciently,
j= np.arange (0, A.shape [1])
for k in range(A.shape[0]):
A[k,j] = method1(x[k],x[j],a,c0,c1)
我尝试更改 np.arange 中的索引,但没有成功。
谁能告诉我如何解决这个问题?
谢谢。
编辑:通过@ajcr 评论,我的错误在于这一行,j= np.arange (0,x.shape [1]),我应该使用二维数组“A”的列数作为 j = np.arange(0,A.shape [1]),但我错误地使用了一维数组x,因此出现错误。它现在工作得很好。
【问题讨论】:
-
IndexErrorforx.shape[1]意味着x只有一个维度 - 你确定它是二维的吗? -
哦!我真的为这个错误道歉,我应该把它当作 j= np.arange (0,A.shape [1])。非常感谢您的评论,它现在运行得很好,比以前快得多:)
-
我将编辑我的问题并指出错误。
-
如果您发布
method1,我们可能会为您提供更多帮助。
标签: python numpy vectorization nested-loops compiler-optimization