我有以下 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
。
关于python - 将 Numpy 数组乘以标量以使每个元素都是整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69785149/