"only integer scalar arrays can be converted to a scalar index"

"only integer scalar arrays can be converted to a scalar index"

我正在生成一个 numpy 数组,其中包含 1 到 6 之间的 1000000 个随机数,我想计算前 10、100、1000 的平均值,...我还想在对数刻度上绘制平均值。除了 Python 和 numpy 和 matplotlib,我不能使用任何东西。为什么会出现此错误?我做错了什么?

这是我的代码:

throws=numpy.random.randint(1,7,(1000000))
print(throws[1:10])

x=np.logspace(1,6,6)
plt.plot(x, int(mean(throws[1:x])))
plt.semilogx()

抱歉我的英语和德语变量名不好...

尝试 运行:

import numpy
x=numpy.logspace(1,6,6)
print(x.dtype)

演出

float64

所以würfe[1:x]是用float64数组作为索引,肯定是不对的

使用

x=numpy.logspace(1,6,6).astype(int)

而且 würfe[1:x] 要求 x 是一个整数而不是数组。

你就快完成了!您只需要对 würfe(掷骰子)数组进行切片,然后对其应用均值,使用

最简单
würfe=numpy.random.randint(1,7,(1000000))
print(würfe[1:10])

x=np.logspace(1,6,6)
y=[np.mean(würfe[:int(x_)]) for x_ in x]  # <--- just add this line
plt.plot(x, y)
plt.semilogx()
plt.show()

x 这里是 [10, 100, 1000, 10000, 100000, 1000000]würfe[:int(x_)]x 从 float 转换为 int 并使用它来将原始数组分割成你想要取平均值的部分的。然后用 .

取平均值