切片具有索引列表的数组

时间:2019-11-01 13:58:25

标签: python arrays list numpy slice

假设a = array([1,2,3])b = array([4,5,6])。我想使用列表对ab进行切片,并对每个部分执行一些操作,然后将结果返回到数组。例如,我提出了一个虚拟函数来演示用法:

def dummy_function(i):
  A = sum(a[:i])
  B = sum(cumsum(b[i:]))
  return A*B

例如,此函数将返回dummy_function(2) = 18dummy_function(1) = 16,但我想使用列表作为其参数来求值:

>>> dummy_function([2,1])
array([18,16])

相反,我得到IndexError: invalid slice。我不想使用循环来遍历[2,1]的元素,因为我相信它可以更有效地完成。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我不知道我是否正确理解了你想要的东西,但这对我有用:

import numpy as np  


def func(i):
  a = np.array([1,2,3])
  b = np.array([4,5,6])
  A = np.sum(a[:i])
  B = np.cumsum(b[i:])
  C = A*B
  return C[0]

print(func(2))

结果是18
如果您想给“ func”一个列表作为参数,那么您可能应该遍历列表元素。