我知道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
点写什么。我本质上是循环并向表中添加行。什么是最有效的方法?
答案 0 :(得分: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)
答案 1 :(得分:1)
完全回答你的问题
a = []
b= np.array([1,2,3])
for i in xrange(100):
a.append(b)
a = np.vstack( tuple(a) )
tuple
函数将一个iterable(在本例中为一个列表)作为元组对象进行转换,np.vstack
将一个numpy数组元组作为参数。