2016-09-21 6 views
5

मैं इस कोड को चलाने के लिए कोशिश कर रहा हूँ, और पिछले 2 डॉट उत्पादों त्रुटि दिखा रहे हैं शीर्षक में सुझाव के रूप में। मैं मैट्रिक्स के आकार की जाँच की और दोनों (3, 1) कर रहे हैं, तो क्यों यह मुझे एक त्रुटि जबकि डॉट उत्पाद कर दिखा रहा है?दिखा ValueError: आकार (1,3) और (1,3) गठबंधन नहीं: 3 (मंद 1) = 1 (मंद 0)

coordinate1 = [-7.173, -2.314, 2.811] 
coordinate2 = [-5.204, -3.598, 3.323] 
coordinate3 = [-3.922, -3.881, 4.044] 
coordinate4 = [-2.734, -3.794, 3.085] 

import numpy as np 
from numpy import matrix 
coordinate1i=matrix(coordinate1) 
coordinate2i=matrix(coordinate2) 
coordinate3i=matrix(coordinate3) 
coordinate4i=matrix(coordinate4) 

b0 = coordinate1i - coordinate2i 
b1 = coordinate3i - coordinate2i 
b2 = coordinate4i - coordinate3i 

n1 = np.cross(b0, b1) 
n2 = np.cross(b2, b1) 

n12cross = np.cross(n1,n2) 
x1= np.cross(n1,b1)/np.linalg.norm(b1) 
print np.shape(x1) 
print np.shape(n2) 
np.asarray(x1) 
np.asarray(n2) 

y = np.dot(x1,n2) 
x = np.dot(n1,n2) 

return np.degrees(np.arctan2(y, x)) 

उत्तर

7

n12 = np.squeeze(np.asarray(n2)) 

X12 = np.squeeze(np.asarray(x1)) 

का उपयोग करके सरणी के लिए मैट्रिक्स में परिवर्तित करने पर समस्या हल हो जाती।

3

मानक अंकगणित, जो मिलान आयाम इच्छाओं के विपरीत, डॉट उत्पादों की आवश्यकता है कि आयामों में से एक हैं:

  • (X..., A, B) dot (Y..., B, C) -> (X..., Y..., A, C), जहां ... का अर्थ है "0 या अधिक विभिन्न मूल्यों
  • (B,) dot (B, C) -> (C,)
  • (A, B) dot (B,) -> (A,)
  • (B,) dot (B,) ->()

आपकी समस्या यह है कि आप np.matrix का उपयोग कर रहे हैं, जो आपके कोड में पूरी तरह से अनावश्यक है - np.matrix का मुख्य उद्देश्य a * b को np.dot(a, b) में अनुवाद करना है। एक सामान्य नियम के रूप में, np.matrix शायद एक अच्छा विकल्प नहीं है।

0
numpy.dot(a, b, out=None) 

दो सरणी के डॉट उत्पाद।

एन आयामों के लिए यह a की अंतिम धुरी और b के दूसरे से अंतिम योग पर एक समृद्ध उत्पाद है।

प्रलेखन: numpy.dot

4

पहले मैट्रिक्स और दूसरा मैट्रिक्स की पंक्ति के स्तंभ बराबर होना चाहिए और आदेश में इस केवल

column of first matrix = row of second matrix 

की तरह होना चाहिए और नीचे कदम का पालन नहीं करते

row of first matrix = column of second matrix 
यह

एक त्रुटि

फेंक होगा
संबंधित मुद्दे