在python中将行添加到表中

在python中将行添加到表中,python,numpy,Python,Numpy,我知道R中有一个rbind函数: list = c(1,2,3) blah = NULL blah = rbind(blah,list) 我如何在python中复制它?我知道你可以写: a = NULL b= array([1,2,3]) for i in range(100): a = np.vstack((a,b)) 但是我不确定在a=NULL点中写什么。我基本上是循环并向表中添加行。最有效的方法是什么?在numpy中,如果先预分配空间,然后循环填充该空间,比动态创建更大的阵列更有效。

我知道R中有一个rbind函数:

list = c(1,2,3)
blah = NULL
blah = rbind(blah,list)
我如何在python中复制它?我知道你可以写:

a = NULL
b= array([1,2,3])
for i in range(100):
 a = np.vstack((a,b))

但是我不确定在
a=NULL
点中写什么。我基本上是循环并向表中添加行。最有效的方法是什么?

在numpy中,如果先预分配空间,然后循环填充该空间,比动态创建更大的阵列更有效。例如,如果大小为500,您将:

a = np.empty((500, b.shape[0]))
然后,根据需要循环并输入值:

for i in range(500):
    a[i,:] = ...
请注意,如果您真的只想重复b 500次,您可以执行以下操作:

In [1]: import numpy as np

In [2]: b = np.array([1,2,3])

In [3]: a = np.empty((500, b.shape[0]))

In [4]: a[:] = b

In [5]: a[0,:] == b
Out[5]: array([ True,  True,  True], dtype=bool)

准确地回答你的问题

a = []
b= np.array([1,2,3])
for i in xrange(100):
  a.append(b)
a = np.vstack( tuple(a) )

tuple
函数将一个iterable(在本例中是一个列表)强制转换为tuple对象,并且
np.vstack
将一个numpy数组的tuple作为参数。

您事先知道大小吗?我写a=np.empty((500500))并循环并设置[1,:]=b但是得到一个错误,说输出操作数需要一个reductionedited,以使第二部分更清晰,尽管Ophion的答案更好,如果你真的只是想复制一个数组X倍。nvm我刚刚做了一个[i,:]=b.reformate(,500)什么是b.shape?如果它要求降价,那很可能是因为b.shape!=(a.形状[1],)