【问题标题】:Index a 2D matrix with a 1D matrix用 1D 矩阵索引 2D 矩阵
【发布时间】:2019-10-20 05:59:16
【问题描述】:

我有一个名为 matrix1 的二维值矩阵,如下所示:

col1     col2    col3
1         1        0
2         1        2

我有一个名为 arr1 的一维矩阵,如下所示:

col1
10
20
30

我想使用这个二维矩阵中的值来索引一维矩阵中的值,在这个过程中创建一个新的二维矩阵。

new_col1      new_col2      new_col3
  20            20             10
  30            20             30

实际的阵列是形状为 (512,1) 和矩阵形状的 (65672, 720)。我曾尝试使用 arr1[matrix1],但最终出现内存错误。

【问题讨论】:

  • arr1[matrix1] 是最简单的方法。你的数组有多大?
  • (512,1) 和 (65672,720)
  • 数据帧的 dtypes 是什么?
  • matrix1.copy() 会发生什么?另一个内存错误?
  • 数据类型为 int32。

标签: python-3.x numpy indexing numpy-ndarray


【解决方案1】:

Python3 解决方案:

import numpy as np
x = np.array([[1, 1, 0], [2, 1, 2]])
y = np.array([10, 20, 30])
y[x]

输出:

array([[20, 20, 10],
       [30, 20, 30]])

【讨论】:

  • 他们已经尝试过了。他们在问题中说明了这一点,但出现了内存错误。
  • 如果出现内存错误,这是因为整体内存使用情况,而不是此解决方案的具体问题。结果不会大于matrix1, (65672, 720,1)(给或取一些dtypearr1)。
【解决方案2】:

所以我注意到我使用的是 32 位 python 解释器而不是 64 位 python 解释器(我在 pycharm 中使用虚拟环境)将 python 解释器更改为 64 位修复了这个内存错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2018-06-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    相关资源
    最近更新 更多