2013-10-23 124 views
1

我的程序需要找到一个向量中的所有项的乘积,除了一行i,它由for循环确定。 numpy.delete函数不会接受i作为输入,只能是一个数字。有没有解决方法?迭代删除numpy数组中的行

实施例:

for i in range(some_range): 
    arr=[some vector] 
    section=np.delete(arr,i,axis=0) 
    return prod(section) 

这将返回一个ValueError:无效条目消息。当我将i替换为1时,代码工作正常。有什么方法可以在保留for循环的同时执行此操作?

+0

您的缩进是否正确?你在循环中使用'return'的方式,它只会运行一次(使循环没有意义)。 – Blckknght

回答

1

无需删除任何内容。刚乘两个子产品(i之前的元素和i后的元素):

In [10]: import numpy as np 

In [11]: arr = np.arange(1, 10) 

In [12]: i = 3 

In [13]: np.prod(arr[:i]) * np.prod(arr[i+1:]) 
Out[13]: 90720 

喜欢与你原来的代码,你需要确保i是有效的索引(如果你不这样做,你” d获得整个阵列的产品)。