[英]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
现在d
在F
和T
列指定的位置具有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坐标和值。 你应该拥有所需的一切
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.