Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-zip方法和舍入行为_Python_Arrays_Numpy_Rounding - Fatal编程技术网

Python-zip方法和舍入行为

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]))。对的但现在我想要的是比例,而不是计数(四舍五入到第三位数)

刚才看到了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]))
。对的但现在我想要的是比例,而不是计数(四舍五入到第三位数),所以我想要

它给出了
计数的
数组([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]