我想計算一組整數中所有元素之間的絕對差異。我正在嘗試abs(x-y)
,其中x
和y
是該集合中的兩個元素。我想爲所有組合做到這一點,並將結果列表保存在一個新的集合中。Python:計算一組整數中所有元素之間的差異
3
A
回答
2
我要計算所有元素之間的絕對差額在一組整數(...)並保存在一組新的結果列表。
您可以使用itertools.combinations:
s = { 1, 4, 7, 9 }
{ abs(i - j) for i,j in combinations(s, 2) }
=>
set([8, 2, 3, 5, 6])
combinations
返回所有組合的R-長度元組s中無需更換,即:
list(combinations(s, 2))
=>
[(9, 4), (9, 1), (9, 7), (4, 1), (4, 7), (1, 7)]
+0
有沒有更快的方法?對於更大的套件來說,花費的時間太長(> 10秒)。 –
0
由於集合不保持順序,所以可以使用類似於ordered-set的東西並迭代到最後一個,但是隻有一個。
0
爲了完整起見,這裏的基礎上的解決方案Numpy ndarray
's和pdist():
In [69]: import numpy as np
In [70]: from scipy.spatial.distance import pdist
In [71]: s = {1, 4, 7, 9}
In [72]: set(pdist(np.array(list(s))[:, None], 'cityblock'))
Out[72]: {2.0, 3.0, 5.0, 6.0, 8.0}
0
下面是另一種解決方案基於numpy的:
data = np.array([33,22,21,1,44,54])
minn = np.inf
index = np.array(range(data.shape[0]))
for i in range(data.shape[0]):
to_sub = (index[:i], index[i+1:])
temp = np.abs(data[i] - data[np.hstack(to_sub)])
min_temp = np.min(temp)
if min_temp < minn : minn = min_temp
print('Min difference is',minn)
輸出:「最小差爲1」
相關問題
- 1. 如何計算python中各組數字之間的差異?
- 2. 矩陣列的所有組合之間的計算差異
- 3. 計算兩次python之間的差異
- 4. 如何計算兩個數組中每個元素之間的差異?
- 5. Python - 列表元素之間的差異
- 6. jQuery - 所選DOM元素和新元素之間的差異
- 7. 如何計算這整個php數組的所有元素?
- 8. Javascript跟蹤數組中元素之間的差異?
- 9. pandas:groupby並計算每個組中第一個元素的時間差異
- 10. 計算兩個數組之間的差異
- 11. PHP:計算數組值之間的差異?
- 12. JQuery計數節點2個元素之間的深度差異
- 13. 計算日期之間的差異 - Postgres
- 14. 計算兩次之間的差異
- 15. C計算日期之間的差異
- 16. 計算兩列之間的差異sql
- 17. 計算圖像之間的差異
- 18. 計算小時之間的差異
- 19. 數組之間的差異
- 20. Python 3 - 計算兩個時間值之間的差異
- 21. 找出數組元素之間的最小差異
- 22. 計算兩個日期字段的計數之間的差異
- 23. 計算有序數據幀中條目與下一條目之間的差異
- 24. 獲取整數數組中不等元素的最小差異
- 25. 計算一段時間內兩行之間的差異
- 26. 使用組的計數(屬性)和計數(*)之間的差異
- 27. 如何計算列表中的數字之間的差異?
- 28. 計算大熊貓數據幀中的行之間的差異
- 29. 兩個日期之間的計算差異MySQL/Python
- 30. 計算兩個指南針標題之間的差異Python
作爲蟒集合是無序的,沒有「最後一個元素」。你可以在做你的東西之前將它轉換成列表。 'list(yourset)' – MaxNoe
一般而言,您可以將任何集合轉換爲列表(list(myset)),然後使用列表算法。但也許如果你提供了一個你想要實現的例子,那麼可能會有更好的方法。 – miraculixx
python set是「無序的獨特元素集合」。所以沒有「Python集合中的最後一個元素」的含義 – Eular