Python 如何将每行文件与loadtxt一起使用?
好的,我有一个13列的长文件,我想用的是:粒子速度x分量,vely分量,和velz分量。我想把文件中每一行的每一个速度分量,即每个粒子放入一个数组,然后计算模量。但是我不能让它这么做。它给我一个[[x1,x2,x3,…],[y1,y2,y3…],[z1,z2…]的数组,然后计算它的模。我得到的是Python 如何将每行文件与loadtxt一起使用?,python,Python,好的,我有一个13列的长文件,我想用的是:粒子速度x分量,vely分量,和velz分量。我想把文件中每一行的每一个速度分量,即每个粒子放入一个数组,然后计算模量。但是我不能让它这么做。它给我一个[[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
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
但这也不行。有什么帮助吗?我假设您的txt文件是这样一种选项卡: 1 2 3 4 5 6 7 8 9 代码:
我测试了您的方法,在单个loadtxt列读取和数组连接之间,它正在转换您的矩阵 最简单的方法是在一行中选择所需的列:
vel = np.loadtxt('data.txt', usecols=(1,2,3))
或者,您可以转换您的vel矩阵
vel = np.array([v_x,v_y,v_z]).transpose()
不确定这是否是你要找的,但我会重新安排。我倾向于在通过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']])
f位中的for行有什么问题,为什么不起作用,只要你使用f.readlines,那一行就是整行文本它只是重复打印出相同的内容数组的模,包含文件中每一行的所有内容
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']])