2017-09-22 530 views
0

我有這樣的功能,但問題是,它取代了第一列,當它替換下一列時,以前的列將不會回到它的原始形式。如何在numpy中只替換一列?

import numpy as np 
from numpy import linalg as la 

def CramersRule(A,b): 
    for c in range (n): 
     detA1 = la.det(A) 
     A[:,c] = b.transpose() 
     print A 
     x = la.det(A)/detA1 
     print ("X%d: ")%(c+1),x 

n = input ("Enter size of matrix nxn: ") 
coeff_matrix = input ("\nEnter coefficient matrix A: ") 
vec_constants = input ("Enter vector of constants b: ") 
A = np.array(coeff_matrix) 
b = np.array(vec_constants) 
print A 

CramersRule(A, b) 

回答

0

這將放回的A

def CramersRule(A,b): 
    for c in range (n): 
     detA1 = la.det(A) 
     temp = np.array(A[:,c]) 
     A[:,c] = b.transpose() 
     print A 
     x = la.det(A)/detA1 
     print ("X%d: ")%(c+1),x 
     A[:,c]=temp.transpose() 

temp = np.array(A[:,c])替換列臨時存儲的A替換列。有趣的是,沒有明確的np.array()temp將改變爲A[:,c]的變化。 A[:,c]=temp.transpose()將舊列重新分配至A