我事先并不知道2d数组(a
)的行数和列数:
a = np.empty( (0,0), dtype=np.uint8 )
a.ndim
2
我设法将我从文件中读取的每一行转换为名为line
我想将每行添加/追加到a
,所以我尝试了:
np.vstack( (a,line) )
但我明白了:
ValueError: all the input arrays must have same number of dimensions
如果我致电a=np.append(a,line)
,维度数就会变为1
你能帮忙吗?
答案 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数组的问题 - 它们在维度方面是不可变的。