списков Python являются указатели, так что я могу сделать следующее:NumPy - добавление в массив, не создавая копию
a = []
b = a
b.append(1)
>>> print a, b
[1] [1]
Какой путь для достижения этой проблемы с помощью NumPy? Поскольку append numpy создает новый массив. То есть:
a = np.array([])
b = a
b = np.append(b, 1)
>>> print a, b
[] [1.]
EDIT То, что я пытаюсь выполнить:
У меня есть большой текстовый файл, который я пытаюсь разобрать с re
: В зависимости от маркеров в файле, Я хочу изменить массив, к которому я добавляю. Например:
x = np.array([])
y = np.array([])
with open("./data.txt", "r") as f:
for line in f:
if re.match('x values', line):
print "reading x values"
array = x
elif re.match('y', line):
print "reading y values"
array = y
else:
values = re.match("^\s+((?:[0-9.E+-]+\s*)*)", line)
if values:
np.append(array, values.groups()[0].split())
Вы не можете этого сделать. Массивы массивов выделены последовательно в памяти, поэтому их необходимо перераспределить, если вы хотите изменить их размер. Добавление к ним по своей сути неэффективно. Можете ли вы дать немного больше контекста вашей проблемы? –
Возможный дубликат [Как расширить массив на месте в Numpy?] (Http://stackoverflow.com/questions/13215525/how-to-extend-an-array-in-place-in-numpy) – wnnmaw
@ SvenMarnach Sure, отредактированный сейчас. – Ben