IndexError:在numpy矩阵广播期间,索引10超出了轴1的大小为10的范围

时间:2019-03-09 13:45:41

标签: python numpy

我试图了解numpy中广播的工作方式。

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

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

  

IndexError:索引10超出了尺寸为10的轴1的边界

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我不知道目标是什么,但是要摆脱错误并保留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]