मेरे पास एक सरणी है उदा।

Array = [[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[1,1,1],[2,2,2]]

और मुझे ऐसा कुछ चाहिए जो निम्न आउटपुट करेगा:

Repeated = [[1,1,1],[2,2,2]]

बार-बार पंक्तियों की संख्या को संरक्षित करना भी काम करेगा, उदा।

Repeated = [[1,1,1],[1,1,1],[2,2,2],[2,2,2]]

मैंने सोचा था कि समाधान में numpy.unique शामिल हो सकता है, लेकिन मैं इसे काम पर नहीं ला सकता, क्या कोई मूल पायथन/numpy फ़ंक्शन है?

6
Ben Bird 4 जिंदा 2018, 19:26
लेकिन अद्वितीय का उपयोग अद्वितीय नंबर प्राप्त करने के लिए किया जाता है, न कि डुप्लिकेट वाले नंबर प्राप्त करने के लिए। क्या यह हमेशा पूर्णांकों की सूची की सूची है? या वस्तुएं मनमानी वस्तुएं हो सकती हैं?
 – 
Willem Van Onsem
4 जिंदा 2018, 19:28
क्या पोस्ट किए गए समाधानों में से कोई भी आपके लिए काम करता है?
 – 
Divakar
5 जिंदा 2018, 21:05

3 जवाब

की नई axis कार्यक्षमता का उपयोग करना np.unique return_counts=True के साथ जो हमें उन पंक्तियों में से प्रत्येक के लिए अद्वितीय पंक्तियां और संबंधित गणना देता है, हम पंक्तियों को counts > 1 के साथ मुखौटा कर सकते हैं और इस प्रकार हमारा वांछित आउटपुट प्राप्त कर सकते हैं, जैसे इसलिए -

In [688]: a = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[1,1,1],[2,2,2]])

In [689]: unq, count = np.unique(a, axis=0, return_counts=True)

In [690]: unq[count>1]
Out[690]: 
array([[1, 1, 1],
       [2, 2, 2]])
13
Divakar 4 जिंदा 2018, 19:36
क्या बार-बार पंक्तियों की अनुक्रमणिका प्राप्त करना संभव है? उदाहरण के लिए, [0, 5] और [1, 2]
 – 
Sigur
11 जुलाई 2019, 03:32

आप Repeated = list(set(map(tuple, Array))) जैसे कुछ का उपयोग कर सकते हैं यदि आपको आवश्यक रूप से आदेश संरक्षित करने की आवश्यकता नहीं है। इसका लाभ यह है कि आपको अतिरिक्त निर्भरता जैसे numpy की आवश्यकता नहीं है। आप आगे क्या कर रहे हैं इसके आधार पर, आप शायद Repeated = set(map(tuple, Array)) से दूर हो सकते हैं और यदि आप चाहें तो एक प्रकार के रूपांतरण से बच सकते हैं।

0
Hans Musgrave 4 जिंदा 2018, 19:31

यदि आपको दोहराई गई पंक्तियों के सूचकांक प्राप्त करने की आवश्यकता है

import numpy as np

a = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[1,1,1],[2,2,2]])
unq, count = np.unique(a, axis=0, return_counts=True)
repeated_groups = unq[count > 1]

for repeated_group in repeated_groups:
    repeated_idx = np.argwhere(np.all(a == repeated_group, axis=1))
    print(repeated_idx.ravel())

# [0 5]
# [1 6]
5
v.grabovets 27 मार्च 2020, 00:46
यह मेरे लिए बहुत अच्छा काम करता है, बस वही जो मैं ढूंढ रहा था।
 – 
Graham G
28 जिंदा 2021, 22:32