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

问题描述

我试图将行迭代添加到二维np.array

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

因此,我总是只得到堆叠的最后一个数组 有人可以解释一下我如何堆叠所有行吗,为什么这行不通

解决方法

您不应vstack进行迭代,因为它会人为地增加内存使用,如this similar question but related to 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 docs

中阅读更多内容 ,

您必须在vstack上添加A:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...