目前,我有一些这样的代码
import numpy as np ret = np.array([]) for i in range(100000): tmp = get_input(i) ret = np.append(ret, np.zeros(len(tmp))) ret = np.append(ret, np.ones(fixed_length))
我认为此代码 效率不高, 因为np.append需要返回数组的副本而不是 就地修改ret
np.append
我想知道是否可以将extendnumpy数组用于以下代码:
extend
import numpy as np from somewhere import np_extend ret = np.array([]) for i in range(100000): tmp = get_input(i) np_extend(ret, np.zeros(len(tmp))) np_extend(ret, np.ones(fixed_length))
这样,extend效率会更高。有人对此有想法吗?谢谢!
想象一个numpy数组占据一个连续的内存块。现在想象一下其他对象,例如其他numpy数组,它们正占据着numpy数组左右两侧的内存。没有空间可以追加或扩展我们的numpy数组。numpy数组中的基础数据始终占用 连续 的内存块。
因此,任何追加或扩展numpy数组的请求都只能通过分配一个更大的全新内存块,将旧数据复制到新块中,然后追加或扩展来满足。
所以: