【发布时间】:2019-03-03 13:30:55
【问题描述】:
将整数列表转换为 0 到 1 之间的有效方法是什么,例如:
[0] -> [0]
[9] -> [0.9]
[9, 19] -> [0.09, 0.19]
[9, 19, 1000] -> [0.0009, 0.0019, 0.1]
我在想:
def integer_to_0_1(numpy_array):
divisor = 10 ** len(str(np.max(numpy_array)))
return numpy_array/divisor
原因
我正在从其他 2 列的 pandas 数据框中创建一个 ID,但我希望该 ID 是可排序的。因此,与其将 ID 创建为"col1_col2" 之类的 str,我想如果我将其设为col1.col2 之类的数字,它很容易排序并且订单信息不会丢失。例如
--------------- ------------
| col1 | col2 | | ID |
| 0 | 0 | -> | 0 |
| 0 | 110 | | 0.110 |
| 2332 | 3 | | 2332.003 |
【问题讨论】:
-
首先需要一个看起来很尴尬的转换。整数列表首先来自哪里?
-
您当前的代码是否会导致性能问题?
-
我正在从其他 2 列的 pandas 数据框中创建一个 ID,但我希望该 ID 是可排序的。因此,与其将 ID 创建为像
"col1_col2"这样的 str,我想如果我将其设为像col1.col2这样的数字,它很容易排序并且订单信息不会丢失。 -
如果其中一个数字为零怎么办?如果一个是负数?
-
使用
factor=10**-len(...)然后乘法可能比除法快一点。你也可以假设所有元素都是非负的吗?
标签: python performance numpy math computer-science