【问题标题】:Convert NxM numpy array to (N*M)x1将 NxM numpy 数组转换为 (N*M)x1
【发布时间】:2014-06-16 06:52:40
【问题描述】:

我有一个看起来像这样的 numpy 数组:

            day1, day2, ..., dayM
year month
1            .                    
2                .
.                    .
.                        .
.                            .
N                               (yearN,dayM)

在我看来,这种格式有点奇怪。对于此类工作,我宁愿将数据放在一个列中,然后再加载到 pandas 中(或者,如果有更方便的可用内容,我可以先加载到 pandas 中)。

我可以使用一些简单的方法专门针对“日”行和列执行此操作吗?我不太关心保留“年”和“月”,所以让我们假装它们不存在。

编辑:我忘了提到,虽然“日”矩阵中的每一行长度为 31,但我只需要保留对应于该月的数量(包括闰年)。看起来可能是时候循环了......

【问题讨论】:

  • 你试过numpy的reshape函数吗?
  • 应该非常直接地使用 pandas stack 和一些字符串解析。
  • @U2EF1 我以前从未使用过堆栈,但实际上它看起来非常有用。不过,可能需要花点时间来处理索引后记。

标签: python arrays numpy pandas


【解决方案1】:

重塑建议最终成为最有效的方法。这就是最终为我工作的方法,并且比我快得多

reshaped = np.reshape(X,N*M)
result = np.delete(reshaped, np.where(reshaped==32744))

其中 X 是上面提到的矩阵。 np.delete 是去掉矩阵中小于 31 天的月末的填充值。

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2020-05-15
    • 1970-01-01
    相关资源
    最近更新 更多