मुझे एक बहुपद की जड़ों को खोजने का प्रयास करने में समस्या हो रही है जिसमें पाइथन पर डेटाफ्रेम के एकाधिक कॉलम शामिल हैं।

सीपी = ((u1+u4)(u1^2-u4^2)) / 2u1^3

मैं u4 की वास्तविक और सकारात्मक जड़ों को खोजने की कोशिश कर रहा हूं।

मैं MATLAB का उपयोग करके जड़ों को खोजने में सक्षम हूं, लेकिन यह सुनिश्चित नहीं है कि उन्हें अजगर का उपयोग करके कैसे खोजा जाए। मैंने पायथन पर निम्न कोड का उपयोग किया है:

df['u4'] = np.roots([ 1/(2*df['u1']**3), 1/(2*df['u1']**2), -1/(2*df['u1']), df['cp'] - 1/2]);

यह वह कोड था जिसका मैंने MATLAB पर उपयोग किया था:

u4 = roots([ 1/(2*u1^3), 1/(2*u1^2), -1/(2*u1), cp - 1/2]);

मुझे ValueError मिलता है: इनपुट रैंक -1 सरणी होना चाहिए। अगर कोई मेरी मदद कर सकता है तो यह बहुत अच्छा होगा।

-2
djh222 2 जुलाई 2019, 19:24

1 उत्तर

सबसे बढ़िया उत्तर

बस अपने कोड से कुछ इंगित करना चाहते हैं।

यह: df['u4'] का अर्थ है कि आप अपने डेटाफ़्रेम में u4 के संपूर्ण कॉलम का चयन कर रहे हैं, न कि इसके भीतर के मान या समान सिंटैक्स के तहत आपके द्वारा किया गया कुछ भी, जिसका अर्थ है कि (2*df['u1']**3) और इसी तरह आगे एक त्रुटि लौटाएगा।

यदि आप प्रत्येक कॉलम की प्रति प्रविष्टि मान की गणना करने का प्रयास कर रहे हैं, तो आपको इसे संपूर्ण डेटाफ़्रेम के माध्यम से पुनरावृत्त करना होगा और प्रति चलने योग्य गणना करना होगा।

for i in range(0, len(df)):

  df['u4'][i] = np.roots([ 1/(2*df['u1'][i]**3), 1/(2*df['u1'][i]**2), -1/(2*df['u1'][i]), df['cp'][i] - 1/2])

मैंने गणित पर ध्यान नहीं दिया (अस्वीकरण: डी)। लेकिन मूल रूप से यह क्या करता है कि यह सभी पंक्तियों के लिए np.roots विधि के अंदर सूत्र का उपयोग करके आपके DataFrame से u4 कॉलम में ith पंक्ति में मान संग्रहीत करता है आपका डेटाफ्रेम, अगर यह समझ में आता है।

वैसे भी, मुझे बताएं कि क्या यह आपकी समस्या का समाधान करता है। धन्यवाद :))

0
Joe 2 जुलाई 2019, 19:39