@@ -597,26 +597,22 @@ def _determine_karray(equivalent_sizes, appended_sizes,
597
597
total_appended_size ):
598
598
599
599
n = len (equivalent_sizes )
600
- A = np .mat (np .zeros ((n + 1 , n + 1 ), dtype = "d" ))
601
- B = np .zeros ((n + 1 ), dtype = "d" )
602
- # AxK = B
603
-
604
- # populated A
605
- for i , (r , a ) in enumerate (equivalent_sizes ):
606
- A [i , i ] = r
607
- A [i , - 1 ] = - 1
608
- B [i ] = - a
609
- A [- 1 , :- 1 ] = [r for r , a in appended_sizes ]
610
- B [- 1 ] = total_appended_size - sum ([a for rs , a in appended_sizes ])
611
-
612
- karray_H = (A .I * np .mat (B ).T ).A1
600
+ eq_rs , eq_as = np .asarray (equivalent_sizes ).T
601
+ ap_rs , ap_as = np .asarray (appended_sizes ).T
602
+ A = np .zeros (n + 1 , n + 1 )
603
+ B = np .zeros (n + 1 )
604
+ np .fill_diagonal (A [:n , :n ], eq_rs )
605
+ A [:n , - 1 ] = - 1
606
+ A [- 1 , :- 1 ] = ap_rs
607
+ B [:n ] = - eq_as
608
+ B [- 1 ] = total_appended_size - sum (ap_as )
609
+
610
+ karray_H = np .linalg .solve (A , B ) # A @ K = B
613
611
karray = karray_H [:- 1 ]
614
612
H = karray_H [- 1 ]
615
613
616
614
if H > max_equivalent_size :
617
- karray = ((max_equivalent_size -
618
- np .array ([a for r , a in equivalent_sizes ]))
619
- / np .array ([r for r , a in equivalent_sizes ]))
615
+ karray = (max_equivalent_size - eq_as ) / eq_rs
620
616
return karray
621
617
622
618
@staticmethod
0 commit comments