2017-11-04 138 views
0
import numpy as np 
A = np.array([[2,1,-1,8], 
     [-3,-1,2,-11], 
     [-2,1,2,-3]]) 

B = A[1]+A[0]* (-A[1][0]/A[0][0]) 
print(B) #B =[ 0. 0.5 0.5 1. ] 
A[1] = A[1]+A[0]* (-A[1][0]/A[0][0]) 
print(A[1]) #A[1] = [0 0 0 1] 

上述情況是怎麼發生的,我該怎麼辦?numpy數組中的元素的乘法和除法給出整數結果

+0

你期望得到什麼? – sam

+0

你的問題是什麼?尋求調試幫助的問題應包括所需的行爲以及輸入和期望輸出的示例。 –

+4

'A'是dtype整數。將浮點值分配給這樣的數組會截斷它們。嘗試從float dtype數組開始(例如A = ...([[2,1,...] ...) – hpaulj

回答

3

在主陣列中使用dtype=float。你的數組默認是整數。

import numpy as np 
A = np.array([[2,1,-1,8], 
     [-3,-1,2,-11], 
     [-2,1,2,-3]], dtype=float) 
B = A[1] + (A[0]*(-A[1,0]/A[0,0])) 
print(B) 
A[1] = A[1] + (A[0]*(-A[1,0]/A[0,0])) 
print(A[1]) 
#Output: 
#[ 0. 0.5 0.5 1. ] 
#[ 0. 0.5 0.5 1. ] 
+0

你可以編輯你的答案,使用適當的二維數組索引,'A [0,1]'? – hpaulj

+0

@hpaulj - 謝謝。編輯: ) – Transhuman