python計算二維陣列行列極值的邏輯矩陣

2021-10-08 03:48:14 字數 3963 閱讀 1213

**功能:

\qquad

獲取乙個二維矩陣中每行(列)中最小值(最大值)對應的「邏輯值矩陣」(不使用迴圈控制語句)。

\qquad

對應於matlab中語句:

\qquad\qquad

data==min(data)data==max(data)

\qquad

例如:\qquad

python實現**:

import numpy as np

defgetmatrixrowmaxminidx

(data,mode=

'min'

):

num = data.shape[0]

if mode==

'min'

:

r_idx = np.argmin(data,axis=1)

.reshape(

1,num)

if mode==

'max'

:

r_idx = np.argmax(data,axis=1)

.reshape(

1,num)

cor_idx = np.concatenate(

(np.arange(num)

.reshape(

1,num)

, r_idx)

,axis=0)

cor_idx = cor_idx.tolist(

) r_idx2 = np.zeros(data.shape)

r_idx2[cor_idx[0]

,cor_idx[1]

]=1return r_idx2

defgetmatrixcolmaxminidx

(data,mode=

'min'

):

num = data.shape[1]

if mode==

'min'

:

r_idx = np.argmin(data,axis=0)

.reshape(

1,num)

if mode==

'max'

:

r_idx = np.argmax(data,axis=0)

.reshape(

1,num)

cor_idx = np.concatenate(

(r_idx, np.arange(num)

.reshape(

1,num)

),axis=0)

cor_idx = cor_idx.tolist(

) r_idx2 = np.zeros(data.shape)

r_idx2[cor_idx[0]

,cor_idx[1]

]=1return r_idx2

if __name__ ==

'__main__'

: data = np.

round

(np.random.randn(5,

10)*100

)print

(data)

idx = getmatrixrowmaxminidx(data)

print

(idx)

idx = getmatrixrowmaxminidx(data,

'max'

)print

(idx)

print(''

) idx = getmatrixcolmaxminidx(data)

print

(idx)

idx = getmatrixcolmaxminidx(data,

'max'

)print

(idx)

執行結果:

[[-

7.76.

-19.47

.41.-

71.-63

.-74.

-1.-

39.][

-57.33

.-13.

116.98.

9.-51

.78.22

.-94.

][52.

-7.-

107.59.

-176.-

68.-54

.89.-

30.168.][

-74.61

.-46.

-76.-

25.10.

33.109.17.

53.][

-51.-

150.14.

-32.43

.-9.

-63.144.94

.-167.]]

[[0.

0.0.

0.0.

0.0.

1.0.

0.][

0.0.

0.0.

0.0.

0.0.

0.1.

][0.

0.0.

0.1.

0.0.

0.0.

0.][

0.0.

0.1.

0.0.

0.0.

0.0.

][0.

0.0.

0.0.

0.0.

0.0.

1.]]

[[0.

1.0.

0.0.

0.0.

0.0.

0.][

0.0.

0.1.

0.0.

0.0.

0.0.

][0.

0.0.

0.0.

0.0.

0.0.

1.][

0.0.

0.0.

0.0.

0.1.

0.0.

][0.

0.0.

0.0.

0.0.

1.0.

0.]]

[[0.

0.0.

0.0.

1.1.

1.0.

0.][

0.0.

0.0.

0.0.

0.0.

0.0.

][0.

0.1.

0.1.

0.0.

0.1.

0.][

1.0.

0.1.

0.0.

0.0.

0.0.

][0.

1.0.

0.0.

0.0.

0.0.

1.]]

[[0.

1.0.

0.0.

0.0.

0.0.

0.][

0.0.

0.1.

1.0.

0.0.

0.0.

][1.

0.0.

0.0.

0.0.

0.0.

1.][

0.0.

0.0.

0.1.

1.0.

0.0.

][0.

0.1.

0.0.

0.0.

1.1.

0.]]

【如果python的numpy中有類似於matlab中的簡單寫法,請知會一下,謝謝!】

計算二維陣列行列成員個數

有兩種方式 1 二維陣列的行列數在定義的時候就是確定好的,所以程式設計人員是知道二維陣列的大小以及行列數的。所以可以直接使用行列數的值。為方便維護,可以將行列數定義為巨集,直接呼叫對應的巨集名作為行列值。2 動態獲取。對於type array a b 形式的二維陣列,可以通過計算sizeof獲取行列...

二維陣列行列調換

將二維陣列中的行列互調顯示出來 首先來看乙個3 3的陣列 1 2 3 4 5 6 7 8 9 行列轉換後 1 4 7 2 5 8 3 6 9 看到上面這倆可以發現對角線上的數是不動的 發生變化的數只有 2 3 6 4 7 8 用二維陣列表示 0 1 0 2 1 2 由陣列能發現 0 橫行 1 0 2...

Python 二維陣列

python陣列的應用中在實際程式設計中是乙個非常重要的應用技術,作為python程式設計人員來說,必須要熟練的掌握這方面的所有應用技巧。那麼,接下來,我們將會通過對python二維陣列的理解來為大家解讀這方面的知識。python中沒有陣列的資料結構,但列表很像陣列,如 a 0,1,2 這時a 0 ...