2017-11-04 146 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