Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将每行文件与loadtxt一起使用?_Python - Fatal编程技术网

Python 如何将每行文件与loadtxt一起使用?

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

好的,我有一个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,))
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']])