在python中,当我说np.array([1,2,3])时,结果是
array([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
但是当我说np.array([11,22,3])时结果是
array([11, 22, 3])
Run Code Online (Sandbox Code Playgroud)
'3' 前面有两个空格,而 '22' 前面有一个空格。后来我使用 Map 函数使用 Pandas 从 CSV 文件中读取此结果
appended_data.append({'array': numpyarray})
OutputDataFrame = pd.DataFrame(appended_data).ix[:, columns]
OutputDataFrame.to_csv('name.csv', index=False)
Run Code Online (Sandbox Code Playgroud)
我需要间距保持一致。有什么办法可以做到吗?
数组的默认显示是每个元素的统一字段宽度,而不是统一的间距:
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]
Run Code Online (Sandbox Code Playgroud)
实际上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'
Run Code Online (Sandbox Code Playgroud)
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]])
Run Code Online (Sandbox Code Playgroud)
固定宽度 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
Run Code Online (Sandbox Code Playgroud)
定界阅读:
In [43]: np.genfromtxt('test.csv',delimiter=',',dtype=None)
Out[43]:
array([[ 1, 123, 32],
[ 34, 1, 2],
[ 0, 23, 1000]])
Run Code Online (Sandbox Code Playgroud)
Python 字符串分割的默认模式使用通用空格:
In [44]: ' 11 223 3'.split()
Out[44]: ['11', '223', '3']
Run Code Online (Sandbox Code Playgroud)
这是一个具有恒定间距(和可变宽度)的 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
Run Code Online (Sandbox Code Playgroud)
np.genfromtxt('test.csv',dtype=None)读起来很好。