任何人都可以闡明爲什麼這個數組值賦值會導致numpy.cross()上的錯誤?爲什麼.as_matrix()調用在計算交叉乘積時導致錯誤?
假設dfAnalysis是一個熊貓數據框,它包含x_rel,y_rel和z_rel作爲列標籤作爲其數據類型條目的浮點值。
當像下面的代碼片段提取它的數據...
A = dfAnalysis.iloc[0][['x_rel','y_rel','z_rel']].as_matrix()
B = dfAnalysis.iloc[1][['x_rel','y_rel','z_rel']].as_matrix()
我得到以下錯誤:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-11-f153b94e791d> in <module>()
7 B = dfAnalysis.iloc[1][['x_rel','y_rel','z_rel']].as_matrix()
8
----> 9 np.cross(A,B)
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/core/numeric.py in cross(a, b, axisa, axisb, axisc, axis)
1819 cp0 -= tmp
1820 multiply(a2, b0, out=cp1)
-> 1821 multiply(a0, b2, out=tmp)
1822 cp1 -= tmp
1823 multiply(a0, b1, out=cp2)
TypeError: ufunc 'multiply' output (typecode 'O') could not be coerced to provided output parameter (typecode 'd') according to the casting rule ''same_kind''
如果2個陣列構建這樣的,錯誤的是固定的,但我不明白爲什麼。有人可以解釋嗎?
A = np.array([dfAnalysis.iloc[0]['x_rel'],
dfAnalysis.iloc[0]['y_rel'],
dfAnalysis.iloc[0]['z_rel']])
B = np.array([dfAnalysis.iloc[1]['x_rel'],
dfAnalysis.iloc[1]['y_rel'],
dfAnalysis.iloc[1]['z_rel']])
np.cross(A,B)
Link to Jupyter Notebook Link to CSV file