Python 3.9.9 - 如何计算一个数组中两项(t 和 t+1)的除法对数

Python 3.9.9 - How to calculate the log of division of two items (t and t+1) from one array

我偶然发现了一个简单的问题,它阻碍了我进一步的进展。 我想计算一个循环中两个项目相除的日志,然后将每个结果保存到一个新数组中。

所以我的数据集已经使用 Sklearn MinMaxScaler 进行了缩放,我想要执行的精确计算如下:

logs = np.empty(12530)
for i in data_prepared - 1:
    logs[i] = np.log10(data_prepared[i + 1] / data_prepared[i])

但是 math.log10()np.log10 return 索引错误:

IndexError: arrays used as indices must be of integer (or boolean) type

如何执行我需要的计算?

编辑: data_prepared dtype 是 float32

如果 data_preparednumpy.array(),您的循环将 return 此列表的值,而不是索引。您的错误提示这就是正在发生的事情,因为 data_prepared 中的值不一定是整数或布尔值。

for i in data_prepared - 1:

相同
for j in range(len(data_prepared)):
    i = data_prepared[j] - 1

所以你应该这样做

logs = np.empty(12530)
for i in range(len(data_prepared) - 1):
    logs[i] = np.log10(data_prepared[i + 1] / data_prepared[i])

或使用评论中指出的点积。