我试图了解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的边界
感谢您的帮助。
答案 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]