Numpy:在Numpy Python中将1d数组(行)添加到空的2d数组中

时间:2017-07-03 15:05:32

标签: python arrays numpy append

我事先并不知道2d数组(a)的行数和列数:

a = np.empty( (0,0), dtype=np.uint8 )
a.ndim
2

我设法将我从文件中读取的每一行转换为名为line

的1d字节数组

我想将每行添加/追加到a,所以我尝试了:

np.vstack( (a,line) )

但我明白了: ValueError: all the input arrays must have same number of dimensions

如果我致电a=np.append(a,line),维度数就会变为1

你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

无法追加Numpy数组。您最简单的方法是使用列表并在其上调用np.asarray()

a = []
# Build list from file
a = np.asarray(a)

答案 1 :(得分:1)

您使用np.vstack走在正确的轨道上。唯一的要求是堆叠的阵列必须具有相同的列数。看看这个:

array = None # initialise array to None first

for ...: # now inside the loop
    line = ... # read line from somewhere and get something like [201, 81, 237, 230]

    if array is None:
        array = line
    else: 
        array = np.vstack((array, line))

就性能而言,这实际上比仅仅在列表末尾创建数组更浪费。这是numpy数组的问题 - 它们在维度方面是不可变的。