【发布时间】:2019-02-26 16:08:44
【问题描述】:
我正在开发一种分析天气数据的工具。此时,所有数据都加载到一个名为master_array 的n×10 矩阵中,其中包含float64 数据类型的数据。我构建了一些过滤器,允许用户指定应该用于进一步计算的年份和月份。这些过滤器生成列表,例如。 G。一个包含整数的列表,如 2008 年至 2010 年期间的 years=[2008, 2009, 2010] 或另一个列表 months=[8, 9, 10] 8 月至 10 月。
master_array 的最后一列包含收集数据的年份、月份之前的列等等。
我现在努力的是构建一个函数,检查master_array 的最后一列是否与列表years 的元素匹配,并从master_array 中删除所有行没有匹配项。
如果列表years 为空,则所有可用数据暂时应保存在master_array 中。
下一步基本相同,但使用master_array 中最后一列之前的列,当然使用列表months 而不是years。
我不能保证master_array 中的值已排序,但该函数必须过滤矩阵。
我很确定我必须使用 numpys delete() 和 argwhere() 但我愿意接受任何有助于解决此问题的简单而整洁的解决方案。
提前致谢。
编辑:
对我来说,非常重要的是保留 master_array 或至少是它的副本并删除不再需要的行,而不是使用 vstack 或类似的东西创建新数组。
【问题讨论】:
-
@jdehesa 你能否提供更多关于 pandas 的详细信息,例如,当我没时间完成这个项目时,我应该关注哪些功能?
-
好吧,如果您从未使用过 Pandas 并且您没有太多时间,您现在可能需要评估它是否值得,但如果您打算在 Python 中处理数据未来,Pandas 几乎是不可或缺的。周围有很多教程和资源,对于您的情况,您可以查看 this 的示例。
-
例如,如果您有一个数据框
df,索引为日期时间,您可以执行df[(df.year >= 2008) & (df.year <= 2010) & (df.month >= 8) & (df.month <= 10)]之类的操作。
标签: python python-3.x numpy matrix