2016-10-26 6 views

答えて

2

np.diag_indicesを使用してそれらのインデックスを取得し、それらのインデックスを使用してインデックスにインデックスを付けるだけで、値を割り当てることができます。

ここでそれを説明するためのサンプル実行だ -

In [86]: arr   # Input array 
Out[86]: 
array([[13, 69, 35, 98, 16], 
     [93, 42, 72, 51, 65], 
     [51, 33, 96, 43, 53], 
     [15, 26, 16, 17, 52], 
     [31, 54, 29, 95, 80]]) 

# Get row, col indices 
In [87]: row,col = np.diag_indices(arr.shape[0]) 

# Assign values, let's say from an array to illustrate 
In [88]: arr[row,col] = np.array([100,200,300,400,500]) 

In [89]: arr 
Out[89]: 
array([[100, 69, 35, 98, 16], 
     [ 93, 200, 72, 51, 65], 
     [ 51, 33, 300, 43, 53], 
     [ 15, 26, 16, 400, 52], 
     [ 31, 54, 29, 95, 500]]) 

ます。またnp.diag_indices_fromを使用することができますし、おそらくそうのような、よりidomaticだろう -

row, col = np.diag_indices_from(arr) 
+0

おかげDivakar。しかし、私はそれをマトリックスでしたい。配列ではありません。さらに、どのように配列に指定されていない、主対角要素にランダムな値を与えることができますか? – Shyamkkhadka

+1

@Shyamkkhadka NumPy行列でも同様に動作するはずです。コードを試してみましたか?また、割り当て部分では、 'np.array([100,200,300,400,500])'は一例に過ぎません。 'arr [row、col] = np.random.randint(0,9、(5))'のように、そこに何かを割り当てることができます。 – Divakar

+0

ありがとう@ディバカール。出来た。 – Shyamkkhadka

関連する問題