【发布时间】:2017-02-22 00:01:39
【问题描述】:
我正在执行的傅立叶分析输出 5 个数据字段,我将每个数据字段收集到 1-d numpy 数组中:频率 bin #、幅度、波长、归一化幅度、%power。
如何最好地构建数据以便我可以按幅度降序排序?
当只使用一个数据字段进行测试时,我可以使用如下的字典:
fourier_tuples = zip(range(len(fourier)), fourier)
fourier_map = dict(fourier_tuples)
import operator
fourier_sorted = sorted(fourier_map.items(), key=operator.itemgetter(1))
fourier_sorted = np.argsort(-fourier)[:3]
我的意图是将其他数组添加到第 1 行,但这不起作用,因为 dicts 只接受 2 个术语。 (这就是为什么this post 没有解决我的问题。)
退一步说,这是一种合理的方法,还是有更好的方法来组合和排序单独的数组?最终,我想从前 3 个频率和相关的其他数据中获取数据值,并将它们写入输出数据文件。
这是我的数据的 sn-p:
fourier = np.array([1.77635684e-14, 4.49872050e+01, 1.05094837e+01, 8.24322470e+00, 2.36715913e+01])
freqs = np.array([0. , 0.00246951, 0.00493902, 0.00740854, 0.00987805])
wavelengths = np.array([inf, 404.93827165, 202.46913583, 134.97942388, 101.23456791])
amps = np.array([4.33257766e-16, 1.09724890e+00, 2.56328871e-01, 2.01054261e-01, 5.77355886e-01])
powers% = np.array([4.8508237956526163e-32, 0.31112370227749603, 0.016979224022185751, 0.010445983875848858, 0.086141014686372669])
最后 4 个数组是 'fourier' 对应的其他字段。 (实际数组长度为 42,但为简单起见减少到 5。)
【问题讨论】:
-
你能添加一些数据吗?!
-
数组?你的意思是列表吗?为什么你使用
dict,然后只是调用items?这没有任何意义...... -
是
zip(range(len(fourier)), fourier)的缩写enumerate(fourier)? -
@juanpa.arrivillaga,我没有提到我在 numpy 工作;是的,这些是数组,而不是列表。我正在尝试修改我在其他地方看到的方法以满足我的需要。它似乎按预期工作,直到我开始使用多个数组。我正在调用项目,因为我的可迭代 b/c 排序不适用于字典。我是新手,我确定有更好的方法。我全神贯注。
-
@PaulPanzer:是的,它们似乎包含相同的信息。我没有使用 enumerate(),但似乎无法将结果打印到控制台,因为我可以创建我创建的 'fourier_tuples' 数组。