【发布时间】:2016-08-19 07:02:57
【问题描述】:
Python 列表是指针,因此我可以执行以下操作:
a = []
b = a
b.append(1)
>>> print a, b
[1] [1]
使用 numpy 完成此行为的方法是什么?因为 numpy 的 append 创建了一个新数组。那就是:
a = np.array([])
b = a
b = np.append(b, 1)
>>> print a, b
[] [1.]
编辑 我要完成的工作:
我有一个大文本文件,我试图用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 数组在内存中连续分配,因此如果要调整它们的大小,则需要重新分配它们。附加到它们本质上是低效的。你能提供更多关于你的问题的背景吗?
-
@SvenMarnach 当然,现在已编辑。
-
@hansatz 以这种方式使用 NumPy 数组确实效率低下。收集列表中的数据,并在读取完文件后从列表中构建一个 Numpy 数组。
-
@SvenMarnach 好的,很高兴了解效率。那我就这样处理吧