我是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。答案 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
的值在F
和T
列以及其他地方指定的位置。
答案 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)