ли это вместо:
arrays = [openBidArray, highBidArray, lowBidArray, closeBidArray]
Другими словами, ваш список должен быть список массивов, а не список строк, которые по совпадению содержат имена массивов вы случайно определили.
Ваша следующая проблема заключается в том, что np.append()
возвращает копию массива с добавленным элементом, а не добавлением на место. Этот результат сохраняется в array
, но array
будет назначен следующий элемент из списка на следующей итерации, и измененный массив будет потерян (за исключением последнего, конечно, который будет находиться в array
в конце петля). Таким образом, вы захотите сохранить каждый измененный массив обратно в список. Для этого вам нужно знать, из какого слота он появился, и вы можете использовать enumerate()
.
for i, array in enumerate(arrays):
arrays[i] = np.append(array, bidPrice)
Теперь, конечно, это не обновляет исходные переменные, openBidArray
и так далее. Вы можете сделать это после того, как петли, используя распаковку:
openBidArray, highBidArray, lowBidArray, closeBidArray = arrays
Но в какой-то момент он просто имеет смысл хранить массивы в списке (или словарь, если вам нужно получить доступ к ним по имени), чтобы начать с и не используйте отдельные переменные.
N.B. если вы использовали обычные списки Python здесь вместо массивов NumPy, некоторые из этих проблем исчезнут. append()
в списках - это операция на месте, поэтому вам не нужно будет хранить измененный массив обратно в список или распаковывать отдельные переменные. Возможно было бы сделать все добавление со списками, а затем преобразовать их в массивы позже, если вам действительно нужна функциональность NumPy.
'array = ...' в цикле переназначает итерационную переменную, но не изменяет значение в списке источников. Вы должны использовать индексированный цикл для выполнения этого 'array [i] = ...'. Это основное поведение цикла Python. – hpaulj