我如何使用for循环在numpy中迭代堆叠行

How can i iteratively stack rows in numpy using for loop

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

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

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

您必须在 vstack 上添加 A:

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

迭代时不应该 vstack,因为它会人为地增加内存使用量,如 中所述。

其次,假设 fn(i) returns 一个你想附加到 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 docs

中阅读更多内容