Python-zip方法和舍入行为
刚才看到了python内置的Python-zip方法和舍入行为,python,arrays,numpy,rounding,Python,Arrays,Numpy,Rounding,刚才看到了python内置的zip()中一个相当奇怪的行为。我给了它一个整数数组,但它给出了一个扩展版本 这是原始数组,我的目标是生成一个字典,其中包含每个唯一元素的占用比例np是Numpy a = np.array([1, 2, 3, 1, 1, 2, 1]) 所以我去做什么 elems, counts = np.unique(a, return_counts=True) 它吐出(数组([1,2,3]),数组([4,2,1]))。对的但现在我想要的是比例,而不是计数(四舍五入到第三位数)
zip()
中一个相当奇怪的行为。我给了它一个整数数组,但它给出了一个扩展版本
这是原始数组,我的目标是生成一个字典,其中包含每个唯一元素的占用比例np
是Numpy
a = np.array([1, 2, 3, 1, 1, 2, 1])
所以我去做什么
elems, counts = np.unique(a, return_counts=True)
它吐出(数组([1,2,3]),数组([4,2,1]))
。对的但现在我想要的是比例,而不是计数(四舍五入到第三位数),所以我想要
它给出了计数的数组([0.571,0.286,0.143])
。现在将其压缩到搜索的目录中:
dict(zip(*(elems, counts)))
这意味着{1:0.57099999999995,2:0.285999999999998,3:0.1429999999999999}
,所以看起来四舍五入的计数增加了一些数字 打印Numpy
数组时,Numpy只显示不同数量的有效数字。您可以使用来调整打印精度
使用数据的示例:
import numpy as np
a = np.array([1, 2, 3, 1, 1, 2, 1])
elems, counts = np.unique(a, return_counts=True)
counts = np.round(counts/a.size, 3)
np.set_printoptions(precision=20)
print(counts)
产出:
[ 0.57099999999999995204 0.28599999999999997646 0.14299999999999998823]
不,这只是与常规的浮动对象不同的numpy
打印对象。
[ 0.57099999999999995204 0.28599999999999997646 0.14299999999999998823]