来自python中的圆柱文本文件的2D数组

时间:2014-07-17 03:07:55

标签: python arrays file numpy

我是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。

3 个答案:

答案 0 :(得分:3)

假设您的文本文件名为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

现在d的值S的值在FT列以及其他地方指定的位置。

答案 1 :(得分:1)

这个样本怎么样:

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

“data”现在包含X y坐标和值。你应该拥有所需的一切

答案 2 :(得分:0)

  1. 读入文件并将所有数据保存到4×n矩阵中,如上所述。
  2. 然后遍历每一行并将相应的S或P值保存为数组[F] [T] = S