numpy

2011-06-09 24 views
6

में उप-सरणी के डॉट उत्पाद को नुकीले में, numpy.dot() फ़ंक्शन का उपयोग दो 2 डी सरणी के मैट्रिक्स उत्पाद की गणना के लिए किया जा सकता है। मेरे पास दो 3 डी सरणी एक्स और वाई (कहते हैं) हैं, और मैं मैट्रिक्स जेड की गणना करना चाहता हूं जहां Z[i] == numpy.dot(X[i], Y[i]) सभी i के लिए। क्या यह गैर-पुनरावृत्ति करना संभव है?numpy

+0

क्या अक्ष से अधिक/अक्ष क्या आप उत्पाद करना चाहते हैं? ऐसे मामले के लिए जहां एक्स और वाई दोनों 3x3 थे, ज़ेड का आकार क्या है? – talonmies

+0

@talonmies यदि दो 3 डी सरणी के एक्स एल एक्स एक्स और के एक्स एम एक्स एन हैं, तो परिणाम के एक्स एल एक्स एन –

उत्तर

7

कैसे के बारे में:

from numpy.core.umath_tests import inner1d 
Z = inner1d(X,Y) 

उदाहरण के लिए:

X = np.random.normal(size=(10,5)) 
Y = np.random.normal(size=(10,5)) 
Z1 = inner1d(X,Y) 
Z2 = [np.dot(X[k],Y[k]) for k in range(10)] 
print np.allclose(Z1,Z2) 

रिटर्न True

संपादित सुधार के बाद से मैं सवाल

from numpy.core.umath_tests import matrix_multiply 
X = np.random.normal(size=(10,5,3)) 
Y = np.random.normal(size=(10,3,5)) 
Z1 = matrix_multiply(X,Y) 
Z2 = np.array([np.dot(X[k],Y[k]) for k in range(10)]) 
np.allclose(Z1,Z2) # <== returns True 
की 3 डी हिस्सा नहीं देखा था

यह काम करता है क्योंकि (docstring राज्यों के रूप में), matrix_multiply

matrix_multiply (x1, x2 [, बाहर]) मैट्रिक्स

गुणा प्रदान करता है पिछले दो आयामों पर

+0

लिखा जाना चाहिए, मुझे नहीं लगता कि एक्स और वाई 3 डी हैं, हालांकि मुझे लगता है कि काम करता है । – DSM

+0

@DSM - हाँ, मूल रूप से याद किया गया। अब मेरे पास सही समाधान है। – JoshAdel

+0

सही संस्करण अच्छा लग रहा है ... धन्यवाद! मुझे खेद है कि मेरा प्रारंभिक प्रश्न स्पष्ट नहीं था। –