вложенный цикл в Python с вводом списков - PullRequest
0 голосов
/ 16 октября 2019

Я хочу иметь массив сигналов, которые вычисляются из функции, с помощью цикла через различные комбинации параметров, что-то вроде ниже:

fast_w = list(range(20, 100, 20))
slow_w = list(range(100, 200, 20))
tradeSignal = np.zeros((len(fast_w), len(slow_w)))
for i in fast_w:
    for j in slow_w:
        tradeSignal[i][j] = signalTrade(i, j, stock_price, end_date)

однако "tradeSignal [i] [j]" неверен какi и j были бы значениями в списке fast_w и slow_w, которые здесь считаются индексом массива tradeSignal

Итак, как правильно написать такой код? новинка для python и его пакета .... спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Как насчет этого? Я не уверен, что это работает, так как нам не хватает части вашего кода, но это должно быть.

trade_signal = np.fromfunction(lambda i, j: signalTrade(i, j, stock_price, end_date), shape=(4, 5))

При работе с numpy следует избегать явных циклов и итераций, если в этом нет крайней необходимости.

0 голосов
/ 16 октября 2019

Вы всегда можете использовать встроенную функцию enumerate().

enumerate(iterable), которая позволит вам повторять получение кортежей (index, value_from_iterable).

Например:

for idx, x in enumerate(range(5, 8)):
    print(idx, x)

Этот код даст следующий результат:

0 5
1 6
2 7

Следовательно, ваш код будет выглядеть следующим образом:

fast_w = list(range(20, 100, 20))
slow_w = list(range(100, 200, 20))
tradeSignal = np.zeros((len(fast_w), len(slow_w)))
for i, fast_val in enumerate(fast_w):
    for j, slow_val in enumerate(slow_w):
        tradeSignal[i][j] = signalTrade(fast_val, slow_val, stock_price, end_date)

Вы можете найти больше информации здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...