Python 将numpy数组写入具有特定列数的csv文件

Python 将numpy数组写入具有特定列数的csv文件,python,csv,numpy,Python,Csv,Numpy,我有一个numpy形状数组(44445),需要将其作为csv文件转储。可以通过以下方式实现这一点: np.savetxt('outfile.txt',array, delimiter=',',fmt="%s") 我使用fmt=“%s”选项,因为在每行的末尾(数组的444元素是NaN) 我想完成的是编写一个5列宽的csv文件,共有39516行(即89个部分,每个部分由5列和444行组成),最后将NaN作为空元素写入第444行的末尾。这样,就有了矩阵中等价元素的数量:89x5x444=444x44

我有一个numpy形状数组(44445),需要将其作为
csv
文件转储。可以通过以下方式实现这一点:

np.savetxt('outfile.txt',array, delimiter=',',fmt="%s")
我使用
fmt=“%s”
选项,因为在每行的末尾(数组的444元素是
NaN

我想完成的是编写一个5列宽的
csv
文件,共有39516行(即89个部分,每个部分由5列和444行组成),最后将
NaN
作为空元素写入第444行的末尾。这样,就有了矩阵中等价元素的数量:
89x5x444=444x445
,或197580条数据

例如:

  1 xxxx,xxxx,xxxx,xxxx,xxxx,
  2 xxxx,xxxx,xxxx,xxxx,xxxx,
    ...
    ...
 89 xxxx,xxxx,xxxx,xxxx,
 90 xxxx,xxxx,xxxx,xxxx,xxxx,
 91 xxxx,xxxx,xxxx,xxxx,xxxx,
    ...
    ...
178 xxxx,xxxx,xxxx,xxxx,
我添加了行号,以便在我的问题中更加清楚。我不希望它出现在实际输出中

这样做的有效方法是什么

目前,我正试图根据我的情况调整这个问题的答案:


.

希望我能很好地理解你的要求

#重塑它
数组_u2;.reshpe(89444,5)
#将其dtype更改为str,这样就可以用空格替换NaN
数组类型(str)
#用空格替换nan
数组\[数组\='nan']=''
#最后,保存它,请参见编辑
编辑

我认为
np.savetxt
不适用于超过2维的numpy数组,因此,参考本文,我们可以尝试以下方法:

#将阵列写入磁盘
将文件('test.txt','w')作为输出文件:
#为了便于阅读,我在这里写了一个标题
#numpy.loadtxt将忽略以“#”开头的任何行
write('#数组形状:{0}\n'.格式(数组形状))
#在ndimensional数组中迭代会沿
#最后一个轴。在本例中,这相当于数组_i,:,:]
对于数组中的数据片:
#格式化字符串表示我正在写
#左对齐列中的值的宽度为7个字符
#小数点后2位。
np.savetxt(输出文件,数据片,fmt='%-7.2f')
#写一个中断来表示不同的片段。。。
outfile.write(“#新切片\n”)

我不明白。你想要444个单独的csv文件吗?@RickTeachey嗯,在某种程度上是的。因为5列乘以89行等于444。我尝试将我的数组重塑为(89,5444)但是np.savetxt不能返回我需要的内容。如果您的数组是444x445形状,则有197580条数据。如果我理解,您需要的是一个39516行(5列)长的csv文件,对吗?第89行、第178行等将以“nan”结尾。对吗?@RickTeachey这是正确的。实际上,第89行、第178行等不应该以“nan”结尾,而应该少一个元素。我不认为这可以通过调用
numpy.savetxt()来实现
。使用掩码数组,您可以获得类似于
xxxx,xxxx,
的内容,即不是一行少了一个元素,而是一行空元素。抱歉@muammar它是
array[array\='nan']='
还有
重塑
。我很喜欢您的解决方案,但当您尝试保存
.astype(str)
array不带
nan
->`TypeError:需要浮点参数,而不是numpy.ndarray`.@muammar,我意识到使用(a,b,c)保存numpy数组时存在问题作为形状。查看编辑并告诉我它是否有效,或者您想自定义它以保存在磁盘中,fmt必须设置为
fmt='%s'
,否则它将失败。非常感谢您的帮助。我会将您的解决方案标记为正确答案。这是我的荣幸,dude=)