【发布时间】:2012-05-01 19:46:59
【问题描述】:
我试图在我从文本文件中读取的格式 ('x','y','value') 的 Nx3 数据中找到局部最大值和计数; 'x' 和 'y' 形成一个等间距的网格,'x','y' 的每个组合都有一个值,看起来像这样:
3.0, -0.4, 56.94369888305664
3.0, -0.3, 56.97200012207031
3.0, -0.2, 56.77149963378906
3.0, -0.1, 56.41230010986328
3.0, 0, 55.8302001953125
3.0, 0.1, 55.81560134887695
3.0, 0.2, 55.600399017333984
3.0, 0.3, 55.51969909667969
3.0, 0.4, 55.18550109863281
3.2, -0.4, 56.26380157470703
3.2, -0.3, 56.228599548339844
...
问题是我尝试使用的图像代码(link)要求数据采用不同的二维矩阵格式进行图像处理。这是代码的相关部分:
# Construct some test data
x, y = np.ogrid[-np.pi:np.pi:100j, -np.pi:np.pi:100j]
r = np.sin(np.exp((np.sin(x)**3 + np.cos(y)**2)))
# Find contours at a constant value of 0.8
contours = measure.find_contours(r, 0.8)
有人可以帮助我将数据转换为所需的“网格”格式吗?
编辑:我终于选择了熊猫,但在一般情况下我发现选择的答案更好。这就是我所做的:
from pandas import read_csv
data=read_csv(filename, names=['x','y','values']).pivot(index='x', columns='y',
values='values')
在此之后data.values 以我想要的二维“图像形式”保持表格。
y -0.4 -0.3 -0.2 -0.1
x
3.0 86.9423 87.6398 87.5256 89.5779
3.2 76.9414 77.7743 78.8633 76.8955
3.4 71.4146 72.8257 71.7210 71.5232
【问题讨论】:
-
我不太明白你的原始数据是什么。它看起来像一个元组列表,但又一次缺少元组之间的逗号。这就是你的数据在文本文件中的样子吗?
-
这是numpy.loadtxt的输出,文本文件中的数据是这样的:3 -0.4 -0.0494273 56.9437 1.88357; 3 -0.3 -0.0258483 56.972 2.03781; 3 -0.2 -0.00939226 56.7715 1.90159; 3 -0.1 0.00208286 56.4123 1.56543;这 ';'代表行尾,我只选择第 1、2、4 列。
-
我明白了,我似乎完全误解了这个问题,对不起。
标签: python image-processing numpy scikits