0

我知道在 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当场写什么。我本质上是在循环并向表中添加行。最有效的方法是什么?

4

2 回答 2

1

在 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)
于 2013-03-27T22:16:04.220 回答
1

准确回答你的问题

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

tuple函数将一个可迭代对象(在本例中为一个列表)转换为一个元组对象,并将np.vstack一个 numpy 数组的元组作为参数。

于 2013-04-01T07:26:07.323 回答