防止 Python 在此处四舍五入为零?
Prevent Python from rounding down to zero here?
我有以下数组和函数:
import numpy as np
a = np.array([24, 23, 4, 52, 34, 49, 59, 18, 19])
def normalize(a):
amin, amax = min(a), max(a)
for i, val in enumerate(a):
a[i] = (val-amin) / (amax-amin)
return a
我得到以下结果:
array([0, 0, 0, 0, 0, 0, 1, 0, 0])
如何防止 Python 不显示零的小数位?
由于只有整数,您的初始 np 数组对其单元格使用 int 类型。如果您在初始数组中仅输入一个 X.0
,它将使用浮点数:
a = np.array([24.0, 23, 4, 52, 34, 49, 59, 18, 19])
>>> print(normalize(a))
[0.36363636 0.34545455 0. 0.87272727 0.54545455 0.81818182 1. 0.25454545 0.27272727]
我想发生的事情是因为 a.dtype
是整数,所以当您使用 a[i] =...
.
更新单个位置时,所有内容都会转换为整数
一般来说,你应该避免在 numpy
:
中循环
a = np.array([24, 23, 4, 52, 34, 49, 59, 18, 19])
def normalize(a):
# np.min is vectorized. Python's `min` is not
amin, amax = np.min(a), np.max(a)
return (a-amin)/(amax-amin)
normalize(a)
您可以通过将数组转换为浮点数来启动该函数。
import numpy as np
a = np.array([24, 23, 4, 52, 34, 49, 59, 18, 19])
def normalize(a1):
a2 = a1.astype(float)
amin, amax = min(a2), max(a2)
return (a2-amin) / (amax-amin)
print(normalize(a))
输出:
[0.36363636 0.34545455 0. 0.87272727 0.54545455 0.81818182
1. 0.25454545 0.27272727]
我有以下数组和函数:
import numpy as np
a = np.array([24, 23, 4, 52, 34, 49, 59, 18, 19])
def normalize(a):
amin, amax = min(a), max(a)
for i, val in enumerate(a):
a[i] = (val-amin) / (amax-amin)
return a
我得到以下结果:
array([0, 0, 0, 0, 0, 0, 1, 0, 0])
如何防止 Python 不显示零的小数位?
由于只有整数,您的初始 np 数组对其单元格使用 int 类型。如果您在初始数组中仅输入一个 X.0
,它将使用浮点数:
a = np.array([24.0, 23, 4, 52, 34, 49, 59, 18, 19])
>>> print(normalize(a))
[0.36363636 0.34545455 0. 0.87272727 0.54545455 0.81818182 1. 0.25454545 0.27272727]
我想发生的事情是因为 a.dtype
是整数,所以当您使用 a[i] =...
.
一般来说,你应该避免在 numpy
:
a = np.array([24, 23, 4, 52, 34, 49, 59, 18, 19])
def normalize(a):
# np.min is vectorized. Python's `min` is not
amin, amax = np.min(a), np.max(a)
return (a-amin)/(amax-amin)
normalize(a)
您可以通过将数组转换为浮点数来启动该函数。
import numpy as np
a = np.array([24, 23, 4, 52, 34, 49, 59, 18, 19])
def normalize(a1):
a2 = a1.astype(float)
amin, amax = min(a2), max(a2)
return (a2-amin) / (amax-amin)
print(normalize(a))
输出:
[0.36363636 0.34545455 0. 0.87272727 0.54545455 0.81818182
1. 0.25454545 0.27272727]