Python 从dict构建直方图而不必迭代关键点
我有一个dict,包含长度不同的numpy数组:Python 从dict构建直方图而不必迭代关键点,python,dictionary,histogram,Python,Dictionary,Histogram,我有一个dict,包含长度不同的numpy数组: MyDcit= {0:array([[ 15. , 3.89678216], [ 36. , 9.49245167], [ 53. , 3.82997799], [ 83. , 5.25727272], [ 86.
MyDcit= {0:array([[ 15. , 3.89678216],
[ 36. , 9.49245167],
[ 53. , 3.82997799],
[ 83. , 5.25727272],
[ 86. , 8.76663208]]),
1:array([[ 4. , 4.1171155 ],
[ 16. , 12.68122196],
[ 31. , 8.64805222],
[ 37. , 6.07202959]]),
2:array([]),...,
90:array([[ 1. , 1. ],
[ 24. , 8.14221573],
[ 27. , 7.36309862]])}
我想获得dict中所有值的直方图。我现在的解决方案是迭代dict中的键,并用固定长度的直方图填充numpy数组:
for KeysElements in MyDict.keys():
hist,bins = numpy.histogram(np.asarray(MyDict[KeysElements])[:,1],50)
numpy_hist[KeysElements,:] = hist
然后,我将numpy数组第一维上的所有直方图相加,以获得初始dict的所有键的直方图:
Total_hist = numpy.sum(numpy_hist,axis=0)
这个解决方案的问题是,我不知道如何处理每次迭代都会改变的箱子,所以我的问题是:有没有可能在不必在循环中构建直方图的情况下实现这一点
谢谢你的建议或链接
Greg您似乎没有在np数组的第二个轴中使用MyDict索引值或第0个值。如果是这种情况,那么您可以将所有numpy数组添加到一起,并在上面绘制直方图
import numpy as np
MyDict = {0:np.array([[ 15. , 3.89678216],
[ 36. , 9.49245167],
[ 53. , 3.82997799],
[ 83. , 5.25727272],
[ 86. , 8.76663208]]),
1:np.array([[ 4. , 4.1171155 ],
[ 16. , 12.68122196],
[ 31. , 8.64805222],
[ 37. , 6.07202959]]),
2:np.array([]),
90:np.array([[ 1. , 1. ],
[ 24. , 8.14221573],
[ 27. , 7.36309862]])}
np_array = np.array([]).reshape(0,2)
for i in MyDict:
a = MyDict[i]
if len(a.shape) == 2 and a.shape[1] == 2:
np_array = np.append(np_array, MyDict[i], axis=0)
print(np.histogram(np_array, 50))
您似乎没有在np数组的第二轴中使用MyDict索引值或第0个值。如果是这种情况,那么您可以将所有numpy数组添加到一起,并在上面绘制直方图
import numpy as np
MyDict = {0:np.array([[ 15. , 3.89678216],
[ 36. , 9.49245167],
[ 53. , 3.82997799],
[ 83. , 5.25727272],
[ 86. , 8.76663208]]),
1:np.array([[ 4. , 4.1171155 ],
[ 16. , 12.68122196],
[ 31. , 8.64805222],
[ 37. , 6.07202959]]),
2:np.array([]),
90:np.array([[ 1. , 1. ],
[ 24. , 8.14221573],
[ 27. , 7.36309862]])}
np_array = np.array([]).reshape(0,2)
for i in MyDict:
a = MyDict[i]
if len(a.shape) == 2 and a.shape[1] == 2:
np_array = np.append(np_array, MyDict[i], axis=0)
print(np.histogram(np_array, 50))
是不是
numpy.histogram(np.asarray(MyDict[KeysElements])[:,1],50)
?我想要numpy数组第二列的直方图,因此numpy.histogram(np.asarray(MyDict[KeysElements])[:,1],50)是numpy.histogram(np.asarray(MyDict[KeysElements])[:,1],50)
?我想要numpy数组第二列的直方图,因此numpy.histogram(np.asarray(MyDict[KeysElements])[:,1],50)Hei,好的,它就这样做了。谢谢。嘿,好的,它成功了。谢谢