Нарезать массив со списком индексов - PullRequest
1 голос
/ 01 ноября 2019

Предположим, a = array([1,2,3]) и b = array([4,5,6]). Я хочу нарезать a и b, используя список и выполнить некоторые операции с каждой частью, а затем вернуть результат в массив. Например, я предлагаю фиктивную функцию, которая демонстрирует использование:

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

Например, эта функция вернет dummy_function(2) = 18 и dummy_function(1) = 16, но я хотел бы оценить ее, используя список в качестве аргумента:

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

Вместо этого я получаю IndexError: invalid slice. Я не хочу использовать цикл для перебора элементов [2,1], потому что считаю, что это можно сделать более эффективно. Как я могу делать то, что я хочу?

1 Ответ

0 голосов
/ 01 ноября 2019

Я не знаю, правильно ли я понял, что вы хотите, но это сработало для меня:

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' получил список какаргумент, то вы, вероятно, должны перебрать элементы списка ..

...