好的,我有一个包含13列的长文件,我想要使用的是:粒子速度x分量,vely分量和vel z。我想将速度的每个分量(对于文件中的每一行,即每个粒子)放入一个数组,然后计算模数。但是,我无法做到这一点。它给了我一个[[x1,x2,x3,......],[y1,y2,y3 ...],[z1,z2 ....]]的数组,然后使用它的模数。我得到的是
import numpy as np
v_x = np.loadtxt('data.txt',usecols=(1,))
v_y = np.loadtxt('data.txt',usecols=(2,))
v_z = np.loadtxt('data.txt',usecols=(3,))
vel = np.array([v_x,v_y,v_z])
mod_vel = np.linalg.norm(vel)
print vel, mod_vel
我尝试过做
f = open('data.txt')
for line in f:
stuff
但这也不起作用。有什么帮助吗?
答案 0 :(得分:0)
我假设您的txt文件是一种(标签分隔):
1 2 3
4 5 6
7 8 9
代码:
with open("test.txt") as f:
t = f.readlines()
splitted = [l[:-1].split("\t") for l in t]
v_x = [l[0] for l in splitted]
v_y = [l[1] for l in splitted]
v_z = [l[2] for l in splitted]
答案 1 :(得分:0)
不确定这是否是您正在寻找的,但我会选择重新调整。我倾向于在通过loadtxt读取数据时尝试使用它们,只是为了清洁。
import numpy as np
data = np.loadtxt(
'data.txt',
usecols=(1,2,3),
delimiter=',',
dtype=[
('vx', 'f8'),
('vy', 'f8'),
('vz', 'f8')
]
)
norm = np.linalg.norm([data['vx'], data['vy'], data['vz']])