我正在尝试读取一个包含3D坐标的txt文件,这些文件包含x y和z数组。但是,在打印结果时,字符串包含撇号和我不希望的其他非数字字符'()'-因为我将使用数据进行绘图。如何删除这些?另外,我也想将第一行作为新矩阵x1,y1,z1。我已经尝试过使用is.digit(将返回false的原因是非数字字符,其中的()包含源位置)将字符串转换为浮点型,从实际文本文件中删除括号,并将其他方法发布到此处徒劳无功。 python / programming的新手-感谢您的帮助。
代码:
x=[]
y=[]
z=[]
data = np.genfromtxt('data0.txt', delimiter=',', dtype=float)
for row in myFile:
x.append(row[0])
y.append(row[1])
z.append(row[2])
print(x)
print(y)
print(z)`
结果:
['(-0.3', '-1.1', '-1.7', '-0.74', '-0.14', '-0.23', '-12.0', '-1.8',
'-1.17', '-17.0', '0.43', '-0.58', '-1.58', '9.8', '-0.76', '-0.98',
'-1.1']
[' -1.1', '-2.45', '-4.4', '-1.77', '-0.34', '-0.57', '-28.0', '-4.5',
'-2.63', '-47.0', '0.65', '-1.58', '-3.79', '23.35', '-1.5', '-2.49',
'-2.8']
[' 1.36)', '2.7', '5.5', '2.4', '0.24', '0.54', '32.0', '6.9', '3.25',
'58.0', '-1.0', '1.94', '4.6', '-28.29', '1.35', '3.7', '3.26']
期望的结果:x,y,z值打印在没有撇号和没有'()'括号的矩阵中。
这是源文件(已在我的jupyter hub上上传):
-0.3, -1.1, 1.36
-1.1,-2.45,2.7
-1.7,-4.4,5.5
-0.74,-1.77,2.4
-0.14,-0.34,0.24
-0.23,-0.57,0.54
-12.0,-28.0,32.0
-1.8,-4.5,6.9
-1.17,-2.63,3.25
-17.0,-47.0,58.0
0.43,0.65,-1.0
-0.58,-1.58,1.94
-1.58,-3.79,4.6
9.8,23.35,-28.29
-0.76,-1.5,1.35
-0.98,-2.49,3.7
-1.1,-2.8,3.26
答案 0 :(得分:0)
您可以遍历每个列表,过滤出大括号并将每个项目转换为浮点数,因此:
float(a.replace('(','').replace(')',''))
列表中每个项目 a 。
答案 1 :(得分:0)
当我将原始程序更改为
import numpy as np
x=[]
y=[]
z=[]
data0 = np.genfromtxt('data0.txt', delimiter=',', dtype=float, usecols=np.arange(0,3))
for row in data0:
x.append(row[0])
y.append(row[1])
z.append(row[2])
print(x)
print(y)
print(z)
因此a)我们在所附图像中提供的数据文件和b)程序(在哪里定义了myFile?)中存在一些不一致之处
我创建了一个示例data0.txt
文件:
-0.3,-1.1,1.36
-1.1,-2.45,2.7
-1.7,-4.4,5,5
0,0,0
注意:我已经删除了所有前导空格,因此,所有数字都是数字。
我得到了这些结果
[-0.29999999999999999, -1.1000000000000001, -1.7, 0.0]
[-1.1000000000000001, -2.4500000000000002, -4.4000000000000004, 0.0]
[1.3600000000000001, 2.7000000000000002, 5.0, 0.0]