将 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,因为 a100 将使每个元素成为整数。

>>> 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/254.