繁体   English   中英

来自python中带列文本文件的2D数组

[英]2D Array from a columned text file in python

我是python的新手,正在研究一个将从文本文件创建2D数组的脚本。 该文件有4列,如下所示:

P    F    T    S
0    0    0    0.227321
0    0    1    0.0380602
0    0    2    -0.804958
0    0    3    0.271401

其中P,F,T和S分别是极化状态,频率,时间和信号强度。 我想创建一个S的2D矩阵,这样它们将具有相应T和F值的X和Y坐标(忽略P)。 我知道如何从文本创建矩阵,但是仅创建一个4×n矩阵,其形式与文本文件相同。 如何生成所需的2D矩阵?

编辑:我的意思是忽略P,而不是S。

假设您的文本文件名为data.txt

import numpy as np
dat = np.loadtxt( 'data.txt' )

现在dat[0,:]将成为第一行,而dat[:,2]将成为第三列,依此类推。 请注意,您将有一个注释字符添加到第一行#你的文件,因此它不会是阅读下载的loadtxt

ii = dat[:,1].astype( np.int )  # this is the F column as ints
jj = dat[:,2].astype( np.int )  # this is the T column as ints

nx = max(ii) + 1
ny = max(jj) + 1
d = np.zeros( (nx,ny) )

n = 0
for i,j in zip(ii,jj):
    d[i,j] = dat[n,3]
    n += 1

现在dFT列指定的位置具有S的值,而在其他位置为0。

该示例如何:

with open("matrix.txt", "r") as df:
    txt = df.read()
    items = txt.split()
    items = [float(n) for n in items]
    data = zip([i for i in items[1::4]], [i for i in items[2::4]], [i for i in items[3::4]])
    print(data)
    print(data[1][2])

输出:

[(0.0,0.0),(0.0,1.0),(0.0,2.0),(0.0,3.0)]

1.0

现在,“数据”包括X y坐标和值。 你应该拥有所需的一切

  1. 如您所说,读入文件并将所有数据保存到4 x n矩阵中。
  2. 然后遍历每一行,并将适当的S或P值保存为array [F] [T] = S

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM