将 Numpy 数组乘以标量,使每个元素都是整数
Multiply a Numpy array by a scalar to make every element an integer
我有以下 Numpy 数组。
a = np.array([0.1, 0.9, 0.17, 0.47, 0.5])
我怎样才能找到一个数字,当它与数组相乘时,每个元素都变成一个整数?
例如,在这种情况下,该数字应为 100,因为 a
次 100 将使每个元素成为整数。
>>> a * 100
array([10., 90., 17., 47., 50.])
我试过取最长十进制长度的10次方。但是,我需要找到尽可能小的数字(并且必须大于 0)。
b = np.array([1.0, 0.5, 0.25, 0.75, 0.5])
因此,在这种情况下,该数字应为 4 而不是 100。
>>> b * 4
array([4., 2., 1., 3., 2.])
从你的策略开始。获得使您的数组成为整数的 10 的最小幂。然后将其转换为整数并获得公约数。你要的数是10的次方除以公约数:
b = np.array([1.0, 0.5, 0.25, 0.75, 0.5])
d = np.gcd.reduce((b * 100).astype(int))
d这里是25
,你要的数是100/25
→4
.
我有以下 Numpy 数组。
a = np.array([0.1, 0.9, 0.17, 0.47, 0.5])
我怎样才能找到一个数字,当它与数组相乘时,每个元素都变成一个整数?
例如,在这种情况下,该数字应为 100,因为 a
次 100 将使每个元素成为整数。
>>> a * 100
array([10., 90., 17., 47., 50.])
我试过取最长十进制长度的10次方。但是,我需要找到尽可能小的数字(并且必须大于 0)。
b = np.array([1.0, 0.5, 0.25, 0.75, 0.5])
因此,在这种情况下,该数字应为 4 而不是 100。
>>> b * 4
array([4., 2., 1., 3., 2.])
从你的策略开始。获得使您的数组成为整数的 10 的最小幂。然后将其转换为整数并获得公约数。你要的数是10的次方除以公约数:
b = np.array([1.0, 0.5, 0.25, 0.75, 0.5])
d = np.gcd.reduce((b * 100).astype(int))
d这里是25
,你要的数是100/25
→4
.