在python中,当我说 np.array([1,2,3])时,结果是
array([1, 2, 3])
但当我说 np.array([11,22,3])时,结果是
array([11, 22, 3])
在' 3'之前有两个空格不像' 22'之前有一个空格。后来我使用map函数从带有Pandas的CSV文件中读取此结果
appended_data.append({'array': numpyarray})
OutputDataFrame = pd.DataFrame(appended_data).ix[:, columns]
OutputDataFrame.to_csv('name.csv', index=False)
我需要间距保持一致。有没有办法这样做?
答案 0 :(得分:3)
数组的默认显示是每个元素的统一字段宽度,而不是均匀的间距:
In [30]: x=np.array([11,223,3])
In [31]: x
Out[31]: array([ 11, 223, 3])
In [32]: x.tolist() # list display with uniform spacing
Out[32]: [11, 223, 3]
实际上numpy
使用的格式如下:
In [35]: fmt = ' '.join(['%3d','%3d','%3d'])
In [36]: fmt
Out[36]: '%3d %3d %3d'
In [37]: fmt%tuple(x)
Out[37]: ' 11 223 3'
np.savetxt
就是这么做的,使用您提供的fmt
和delimiter
。
csv
代表“以逗号分隔”。标签也被使用。如果使用“白色空间”,优秀读者就会对一个,两个或更多“空白”感到高兴。这些表通常被格式化以保持列对齐,而不是保持数字之间的空间不变。
具有混合数字大小的3行数组:
In [39]: x=np.array([[1,123,32],[34,1,2],[0,23,1000]])
In [40]: x
Out[40]:
array([[ 1, 123, 32],
[ 34, 1, 2],
[ 0, 23, 1000]])
固定宽度csv格式:
In [41]: np.savetxt('test.csv',x,fmt='%5d', delimiter=',')
In [42]: cat test.csv
1, 123, 32
34, 1, 2
0, 23, 1000
分隔阅读:
In [43]: np.genfromtxt('test.csv',delimiter=',',dtype=None)
Out[43]:
array([[ 1, 123, 32],
[ 34, 1, 2],
[ 0, 23, 1000]])
Python字符串拆分的默认模式使用通用空格:
In [44]: ' 11 223 3'.split()
Out[44]: ['11', '223', '3']
以下是具有恒定间距(和可变宽度)的csv的示例
In [45]: np.savetxt('test.csv',x,fmt='%d', delimiter=' ')
In [46]: cat test.csv
1 123 32
34 1 2
0 23 1000
np.genfromtxt('test.csv',dtype=None)
读得很好。
答案 1 :(得分:1)
您可以先将均匀间隔的numpy数组转换为列表:
<span dir="rtl"><</span>
会给你
np.array([11, 22, 3]).tolist()
另外,当您映射numpy数组时,传递给函数的每个单独值都没有间距,因此您不必担心它。
请参阅hpaulj's answer below因为它比我的更全面。