python - 将 Numpy 数组乘以标量以使每个元素都是整数

标签 python numpy math decimal

我有以下 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/254

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

相关文章:

python - 将 df.value_counts 写入新文件

php - 统一排列/分布数组项

algorithm - 扩展线段以适合边界框

Python Pandas Drop 在使用 drop 时重新排序我的数据框

python - 在 Python 中将 HTML 子标签更改为同级标签

python - 使用 tensorflow 将 3D 矩阵 reshape 为 2D 矩阵

python - 如何使用字典的值创建 numpy 数组?

python - Matlab 与 Python : Reshape

python - 如何找到每行与列数的最大值并打印它们?

JavaScript: trim .toPrecision() 尾随零