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_prepared
是 numpy.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])
或使用评论中指出的点积。
我偶然发现了一个简单的问题,它阻碍了我进一步的进展。 我想计算一个循环中两个项目相除的日志,然后将每个结果保存到一个新数组中。
所以我的数据集已经使用 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_prepared
是 numpy.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])
或使用评论中指出的点积。