मूल रूप से मेरे पास डेटा की एक सरणी है, और मैं सरणी के न्यूनतम के आधार पर 2 में विभाजित करना चाहता हूं। मैंने लूप के लिए कोशिश की, लेकिन यह मूल्यों के परिमाण के आधार पर इसे प्रभावी ढंग से विभाजित करता है, अगर यह उस मूल्य के बाएं या दाएं है। मुझे लगता है कि मैं numpy में स्प्लिट मॉड्यूल की तरह प्रभावी ढंग से कुछ ढूंढ रहा हूं, लेकिन इसमें सबरेरे वाले सरणी के बजाय 2 स्वतंत्र अलग सरणी देता है।

node1=[]
node2=[]
for i in profile_coarse:
    if i<7.2e-10: 
        node1.append(i)
    else:
        node2.append(i)

जाहिर है क्योंकि 7.2e-10 न्यूनतम है, सभी मान नोड 2 पर जाते हैं और नोड 1 एक खाली सरणी बना रहता है। मिनीमा मेरे डेटा सरणी के बीच में कहीं है, और मैं चाहता हूं कि इससे पहले आने वाली हर चीज को नोड 1 में संग्रहीत किया जाए और नोड 2 के बाद सब कुछ। मैं अस्पष्ट रूप से जानता हूं कि एनपी.कहां है, लेकिन मैं इसे यहां सही तरीके से लागू नहीं कर सकता। मैं अगर लूप की स्थिति को कैसे बदल सकता हूं जैसे कि यह काम करता है? मदद के लिए बहुत बहुत धन्यवाद!

संपादित करें: किसी सरणी की अनुक्रमणिका के विचार का उपयोग करके, मुझे यहां मिला:

 node1=[]
 node2=[]
for index in enumerate(profile_coarse):
    if i<get_lowest_minima(profile_coarse)[0]:                        
        node1.append(i)
    else:
        node2.append(i)
print("array node1", node1, "array node2", node2)

जो काम नहीं करता है - यह नोड 1 सरणी भरता है, और नोड 2 खाली छोड़ देता है ... मैं समझ नहीं सकता कि क्यों। teh get_lowest_minima(profile_coarse)[0] बिट एक टपल का एक इंटरजर तत्व है, और profile_coarse मेरे डेटा की सरणी है। मदद!

0
Learn4life 4 मार्च 2020, 18:18
संकेत: आप किसी तत्व के अनुक्रमणिका की परवाह करते हैं, उसके मूल्य की नहीं। टुकड़ा करने के बारे में पढ़ें
 – 
Adam.Er8
4 मार्च 2020, 18:25
बहुत ही उचित बिंदु - पहले जो टोपी थी उसे ठीक से समझ में नहीं आया! मैं इसके साथ क्या करने की कोशिश कर रहा हूं - लेकिन यह काम नहीं कर रहा है। कोई विचार? संपादित करें: मैंने इसे प्रश्न में रखा है, क्योंकि स्वरूपण वहां बहुत अच्छा है
 – 
Learn4life
13 मार्च 2020, 20:23
@ Adam.Er8 वास्तव में अभी भी आपकी मदद की सराहना करेंगे! ive केवल आज ही फिर से इस परियोजना को लेने में सक्षम है।
 – 
Learn4life
13 मार्च 2020, 20:29

2 जवाब

यहाँ एक सरल उपाय है:

split_index = data.index(min(data))
data1 = data[:split_index]
data2 = data[split_index+1:]

आप इसके साथ split_index भी ढूंढ सकते हैं:

split_index = min(range(len(data)), key=data.__getitem__)

अधिक जानकारी के लिए यह प्रश्न।

1
Riccardo Bucco 4 मार्च 2020, 18:32

आपको न्यूनतम मूल्य के सूचकांक को खोजने और फिर उस सूचकांक के आधार पर सरणी को विभाजित करने की आवश्यकता है।

import numpy as np


a = np.random.randint(0, 255, 10). # sample data [  9  33 155  48 196   3  96 185 112 104]

min_index = np.argmin(a)

node1 = a[:min_index]  # [  9  33 155  48 196]
node2 = a[min_index:]  # [  3  96 185 112 104]
1
marcos 4 मार्च 2020, 18:28