我事先不知道需要的二维数组 (a
) 的行数和列数:
a = np.empty( (0,0), dtype=np.uint8 )
a.ndim
2
我设法将从文件中读取的每一行转换为名为 line
的一维字节数组
我想将每一行添加/append 到a
,所以我尝试了:
np.vstack((a,line))
但我得到:
ValueError:所有输入数组必须具有相同的维数
如果我调用a=np.append(a,line)
,维度数将变为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 数组的问题 - 它们的维度是不可变的。
关于python - numpy : Add a 1d array (row) to an empty 2d array in Numpy Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44888877/