मान लें कि हम एक मैट्रिक्स के डॉट उत्पाद और एक स्तंभ वेक्टर गणना करने के लिए करना चाहते हैं:पाइथन/न्यूम्पी को मैट्रिक्स/वेक्टर डॉट उत्पाद के लिए पंक्ति वेक्टर की आवश्यकता क्यों होती है?
तो Numpy/पायथन में ये हम चले:
: मेंa=numpy.asarray([[1,2,3], [4,5,6], [7,8,9]]) b=numpy.asarray([[2],[1],[3]]) a.dot(b)
परिणाम
सरणी ([[13], [31], [4 9]])
अभी तक, इतना अच्छा है, हालांकि यह भी क्यों काम कर रहा है? में
b=numpy.asarray([2,1,3])
a.dot(b)
परिणाम:
सरणी ([13, 31, 49])
मैं उम्मीद होती है कि [2,1,3] एक पंक्ति वेक्टर है (जिसके लिए डॉट उत्पाद को लागू करने के लिए एक ट्रांसपोज़ की आवश्यकता होती है), लेकिन नम्पी डिफ़ॉल्ट रूप से कॉलम वैक्टर के रूप में सरणी को देखता है (मैट्रिक्स गुणा के मामले में)?
यह कैसे काम करता है?
संपादित करें:
और क्यों है:
b=numpy.asarray([2,1,3])
b.transpose()==b
तो मैट्रिक्स डॉट वेक्टर सरणी काम (ऐसा है तो यह एक स्तंभ वेक्टर के रूप में यह देखता है), लेकिन अन्य कार्यों (स्थानांतरित) करता है काम नहीं करता। यह वास्तव में लगातार डिजाइन नहीं है?
संबंधित प्रश्न: http://stackoverflow.com/questions/17428621/python-differentiating-between-row-and-column-vectors – Mel
'सरणी ([2, 1, 3]) 'पंक्ति पंक्ति नहीं है या एक कॉलम वेक्टर। यह सिर्फ एक वेक्टर है। – user2357112
@ user2357112 क्या आपको इसे एक वेक्टर भी कहना चाहिए? मुझे लगता है कि यह अक्सर देखा भ्रम का मुख्य स्रोत है। "वेक्टर" लोगों द्वारा आम तौर पर '[एन x 1] 'या' [1 x n] 'ऑब्जेक्ट का संदर्भ मिलता है। लेकिन जैसा कि मैंने इसे देखा, बिंदु बिल्कुल ठीक है कि 1 डी 'ndarray' का एक आयाम है, इसलिए मैं कहूंगा कि यह एक वेक्टर नहीं है, बल्कि एक सरणी है। (और निश्चित रूप से, विशेष एन एन एरे हैं जिन्हें वैक्टर या मैट्रिस के रूप में माना जा सकता है, अर्थात् 'n == 2' :) –