迭代地删除numpy数组中的行

时间:2013-10-23 06:13:27

标签: python for-loop numpy

我的程序需要找到向量中所有项的乘积,保存一行i,这由for循环确定。 numpy.delete函数不接受i作为输入,只接受一个数字。有解决方法吗?

示例:

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

这将返回ValueError:无效的条目消息。将i替换为1时,代码工作正常。在保留for循环时是否有任何方法可以执行此操作?

1 个答案:

答案 0 :(得分: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是有效索引(如果不是,则获得整个数组的产品)。