Numpy loadtxt 删除前导零(转换)并定义空格分隔符
Numpy loadtxt remove leading zeros (convert) and define spaces delimiter
我有 XYZ 坐标的文件,这些文件由某些软件以固定列宽的方式生成,包括 spaces 和前导零:
00666666.66 07777777.77 0000333.33
使用线路:
data = np.loadtxt(input_xyz, delimiter = " ", skiprows = 0, unpack = True)
更新:感谢下面的回答,我意识到前导零不是 numpy.loadtxt 的问题 - 它会自动将它们去掉。在这种情况下,我的问题是当值之间至少有 1 space 或更多时如何指定定界符 ()。我发现在没有指定定界符的情况下它可以正常工作,但我有理由必须指定它。
您可以使用正则表达式去除前导零,但必须注意各种情况:
>>> import re
>>> input_xyz = '0012.0034 00000000 00000.12 -012.0034'
>>> re.sub(r'(?m)(^[+-]?|\s+[+-]?)(0(?=\d))+', r'', input_xyz)
'12.0034 0 0.12 -12.0034'
在我的快速测试中,前导 0 没有问题:
In [442]: np.loadtxt([b'00666666.66 07777777.77 0000333.33'])
Out[442]: array([ 6.66666660e+05, 7.77777777e+06, 3.33330000e+02])
它生成一个浮点数数组。
这个字符串,用默认的split
产生
In [446]: b'00666666.66 07777777.77 0000333.33'.split()
Out[446]: [b'00666666.66', b'07777777.77', b'0000333.33']
有一个空格space:
In [448]: b'00666666.66 07777777.77 0000333.33'.split(b' ')
Out[448]:
[b'00666666.66',
b'',
b'',
b'',
b'',
b'07777777.77',
b'',
b'',
b'',
b'',
b'0000333.33']
这是产生错误的空字符串之一:b''
这是否是制表符分隔的?
我有 XYZ 坐标的文件,这些文件由某些软件以固定列宽的方式生成,包括 spaces 和前导零:
00666666.66 07777777.77 0000333.33
使用线路:
data = np.loadtxt(input_xyz, delimiter = " ", skiprows = 0, unpack = True)
更新:感谢下面的回答,我意识到前导零不是 numpy.loadtxt 的问题 - 它会自动将它们去掉。在这种情况下,我的问题是当值之间至少有 1 space 或更多时如何指定定界符 ()。我发现在没有指定定界符的情况下它可以正常工作,但我有理由必须指定它。
您可以使用正则表达式去除前导零,但必须注意各种情况:
>>> import re
>>> input_xyz = '0012.0034 00000000 00000.12 -012.0034'
>>> re.sub(r'(?m)(^[+-]?|\s+[+-]?)(0(?=\d))+', r'', input_xyz)
'12.0034 0 0.12 -12.0034'
在我的快速测试中,前导 0 没有问题:
In [442]: np.loadtxt([b'00666666.66 07777777.77 0000333.33'])
Out[442]: array([ 6.66666660e+05, 7.77777777e+06, 3.33330000e+02])
它生成一个浮点数数组。
这个字符串,用默认的split
产生
In [446]: b'00666666.66 07777777.77 0000333.33'.split()
Out[446]: [b'00666666.66', b'07777777.77', b'0000333.33']
有一个空格space:
In [448]: b'00666666.66 07777777.77 0000333.33'.split(b' ')
Out[448]:
[b'00666666.66',
b'',
b'',
b'',
b'',
b'07777777.77',
b'',
b'',
b'',
b'',
b'0000333.33']
这是产生错误的空字符串之一:b''
这是否是制表符分隔的?