我处理不同形状的数组,我想用numpy.save
保存它们,因此,考虑一下
mat1 = numpy.arange(8).reshape(4, 2)
mat2 = numpy.arange(9).reshape(2, 3)
numpy.save('mat.npy', numpy.array([mat1, mat2]))
它起作用了。但是当我有两个一维相同大小的矩阵时,它就不起作用了。
mat1 = numpy.arange(8).reshape(2, 4)
mat2 = numpy.arange(10).reshape(2, 5)
numpy.save('mat.npy', numpy.array([mat1, mat2]))
它会导致Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: could not broadcast input array from shape (2,4) into shape (2)
注意,这个问题是由numpy.array([mat1, mat2])
引起的,而不是由numpy.save
引起的
我知道这样的排列是可能的:
>> numpy.array([[[1, 2]], [[1, 2], [3, 4]]])
array([[[1, 2]], [[1, 2], [3, 4]]], dtype=object)
所以,我想要的是同时将两个数组保存为mat1
和mat2
。
如果要以与^{} 相同的格式保存多个数组,请使用^{} 。
例如:
如果有多个数组,则可以展开参数:
注意顺序没有被保留。如果确实需要保持顺序,可以考虑改用
pickle
。如果使用
pickle
,请确保指定二进制协议,否则您将使用ascii pickle编写内容,这对于numpy数组来说特别低效。使用二进制协议,ndarray
或多或少地pickle到与np.save
/np.savez
相同的格式。例如:在这种情况下,
result
和data
将具有相同的内容,并且将保留数组输入列表的顺序。相关问题 更多 >
编程相关推荐