2013-04-19 5 views
6

में कई एरे के एलिमेंट वार गुणा कुछ क्वांटम मैकेनिक्स दिनचर्या कोडिंग, मैंने पाइथन के न्यूमपी के उत्सुक व्यवहार की खोज की है। जब मैं दो से अधिक सरणी के साथ NumPy गुणा करता हूं, तो मुझे दोषपूर्ण परिणाम मिलते हैं। नीचे दिए गए कोड में, मुझे लिखना है:पाइथन नम्पी

f = np.multiply(rowH,colH) 
A[row][col]=np.sum(np.multiply(f,w)) 

जो सही परिणाम उत्पन्न करता है। हालांकि, मेरा प्रारंभिक फॉर्मूलेशन यह था:

A[row][col]=np.sum(np.multiply(rowH, colH, w)) 

जो त्रुटि संदेश उत्पन्न नहीं करता है, लेकिन गलत परिणाम। यह सोचने में मेरी गलती कहां है कि मैं संख्यात्मक गुणा दिनचर्या के लिए तीन सरणी दे सकता हूं?

यहाँ पूर्ण कोड है:

from numpy.polynomial.hermite import Hermite, hermgauss 
import numpy as np 
import matplotlib.pyplot as plt 

dim = 3 
x,w = hermgauss(dim) 
A = np.zeros((dim, dim)) 
#build matrix 
for row in range(0, dim): 
    rowH = Hermite.basis(row)(x) 
    for col in range(0, dim): 
     colH = Hermite.basis(col)(x) 
     #gaussian quadrature in vectorized form 
     f = np.multiply(rowH,colH) 
     A[row][col]=np.sum(np.multiply(f,w)) 
print(A) 

:: नोट :: इस कोड को केवल NumPy 1.7.0 और उच्च के साथ चलता है!

उत्तर

13

आपका गलती नहीं पढ़ the documentation में है:

numpy.multiply(x1, x2[, out])

multiply ठीक दो इनपुट सरणियों ले जाता है। वैकल्पिक तीसरा तर्क एक आउटपुट सरणी है जिसका उपयोग परिणाम को संग्रहीत करने के लिए किया जा सकता है। (यदि यह प्रदान नहीं किया गया है, तो एक नई सरणी बनाई जाती है और लौटा दी जाती है।) जब आप तीन सरणी पास करते हैं, तो तीसरा सरणी पहले दो के उत्पाद के साथ ओवरराइट किया गया था।

+0

ठीक है, मेरा बुरा :-)। क्या मुझे इस पोस्ट को हटा देना चाहिए या आपको लगता है कि यह दूसरों के लिए उपयोगी है? – seb

+1

इसे छोड़ दें। मेरी मदद की :) – mrjrdnthms

संबंधित मुद्दे