**功能:
\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 ...