考虑一下有几个相当长的numpy数组:
importy numpy as np;
long_array1 = np.array([random.random() for i in range(10000)]);
long_array2 = np.array([random.random() for i in range(10000)]);
long_array3 = np.array([random.random() for i in range(10000)]);
我想将数组保存到文件file.dat
,每个numpy数组一行。
数组的文本表示应采用类似python数组的格式,即在以下numpy数组的情况下:
我想在文件中保存以下行。在
[0.3213,0.145323,0.852,0.723,0.421452]
我要做的是:
array1_str = ",".join([str(item) for item in long_array1]);
array2_str = ",".join([str(item) for item in long_array2]);
array3_str = ",".join([str(item) for item in long_array3]);
with open("file.dat","w") as file_arrays:
file_arrays.write("[" + array1_str + "]\n");
file_arrays.write("[" + array2_str + "]\n");
file_arrays.write("[" + array3_str + "]\n");
其实一切都很好。我只是怀疑代码的效率。我几乎可以肯定,必须有另一种(更好、更高效)的方法来做到这一点。 我也欢迎对随机列表生成发表评论。在
既然您需要类似Python列表的格式,那么实际使用Python列表格式怎么样?在
这将主要停留在C-land,性能应该会更好。在
如果你不想要这些空间,那就在下列时间之后把它们取出来:
^{pr2}$然而,内存使用可能是个问题。在
这是最快的方法:
如果您想让文本更紧凑,这也很快:
^{pr2}$来源:作为pycollada库的维护者,我对所有可能的方法进行了基准测试。在
听起来你也许可以用^{} 来做这个
比如:
虽然我不认为相应的
numpy.loadtxt()
能够以这种格式读取。在相关问题 更多 >
编程相关推荐