一些上下文:我正在编写代码以将我绘制的数据保存到文本文件中。这些数据应该以这样的方式存储,它可以使用脚本加载回来,这样它就可以再次显示(但这次没有进行任何计算)。最初的想法是将数据存储在格式为x1,y1,x2,y2,x3,y3 ......的列中。
我正在使用一个简化为类似代码的代码(顺便说一句,我不确定使用列表来分组我的数组是最有效的方法):
import numpy as np
MatrixResults = []
x1 = np.array([1,2,3,4,5,6])
y1 = np.array([7,8,9,10,11,12])
x2 = np.array([0,1,2,3])
y2 = np.array([0,1,4,9])
MatrixResults.append(x1)
MatrixResults.append(y1)
MatrixResults.append(x2)
MatrixResults.append(y2)
MatrixResults = np.array(MatrixResults)
TextFile = open('/Users/UserName/Desktop/Datalog.txt',"w")
np.savetxt(TextFile, np.transpose(MatrixResults))
TextFile.close()
但是,当任何数据集具有不同的长度时,此代码会给出错误。阅读类似的问题:
Can numpy.savetxt be used on N-dimensional ndarrays with N>2?
Table, with the different length of columns
然而,这需要打破格式(使用展平或向较短的列添加一些填充字符串以填充较短的数组)
我的问题总结如下:
1)是否有任何方法可以同时转换数组,这些方法是作为连续列单独保存的?
2)或者可能还有将列附加到文本文件中(给定一定数量的行和列来跳过)
3)我应该尝试使用另一个像pandas这样的库吗?
非常感谢您的任何建议。
编辑1:
看了一下之后,似乎留下空格比填充列表更有效。
最后我写了自己的(不确定是否有这个numpy函数),其中我将数组长度与" nan"值。
要获取数据,我使用genfromtxt方法然后使用这一行:
x = x [~isnan(x)]
从阵列中删除这些单元格
如果我找到更好的解决方案,我会发布它:)
答案 0 :(得分:0)
要保存您的阵列,您可以使用np.savez
并使用np.load
阅读它们:
# Write to file
np.savez(filename, matrixResults)
# Read back
matrixResults = np.load(filename + '.npz').items[0][1]
作为附注,您应遵循命名约定,即只有类名以大写字母开头。