【问题标题】:IndexError: index 10 is out of bounds for axis 1 with size 10 during numpy matrix broadcastingIndexError:索引 10 在 numpy 矩阵广播期间超出轴 1 的范围,大小为 10
【发布时间】:2019-07-31 08:34:35
【问题描述】:

我试图了解广播在 numpy 中的工作原理。

Z = np.random.random((500,10))
y = np.arange(500)
print(Z.shape)
print(y.shape)
Z[range(500), y]

我创建了这样的示例,但出现错误:

IndexError:索引 10 超出轴 1 的范围,大小为 10

感谢任何帮助。

【问题讨论】:

  • 这是一个索引问题,而不是广播问题。 y 的大部分值都太大了。

标签: python numpy


【解决方案1】:

数组 Z 的形状是 (500, 10),这意味着在轴一(列)上的大小是 10。但是当你使用 Z[range(500), y] 你实际上是在做 Z[:500, :500] 这是不可能的。如果您想要 Z 的所有值,请使用:Z[:500, :10] 或只是 Z

【讨论】:

    【解决方案2】:

    我不知道目标是什么,但要摆脱错误并保持 500 试试这个:

    import numpy as np
    n = 500
    j = 0 # must be >= 0
    i = 0 # must be >= 0
    Z = np.random.random((n + i,n + j))
    y = np.arange(n)
    print(Z.shape)
    print(y.shape)
    Z[range(n), y]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-29
      • 2021-05-16
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多