-2

我正在尝试迭代地将行添加到我的二维 np.array

A = np.zeros((1,14),dtype = float)
for i in arr:
    A = np.vstack(fn(i))# function returns array 
    

结果我总是只得到我堆叠的最后一个数组有人可以解释一下如何堆叠所有行以及为什么这不起作用

4

2 回答 2

1

您不应该vstack在迭代时,因为它会人为地增加内存使用量,正如在这个类似的问题中所解释的,但与 pandas 相关

其次,假设fn(i)返回一个要附加到的新数组A,那么该行应该是A = np.vstack((A, fn(i))

考虑到这一切,更好的选择是创建所有数组并将其收集到一个列表中,以便以后堆叠。

A = np.zeros((1, 14), dtype=float)
arrays = [A] + [fn(i) for i in arr] # assuming `arr` is an iterable
A = np.vstack(tuple(arrays))

您可以在numpy.vstack 文档中阅读更多内容

于 2020-09-06T17:35:56.223 回答
0

您必须在 vstack 上添加 A:

A = np.zeros((1,14),dtype = float)
for i in arr:
    A = np.vstack([A,fn(i)])# function returns array 
于 2020-09-06T17:35:55.843 回答