亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 2d numpy 數組的每一行中找到最小非零值

在 2d numpy 數組的每一行中找到最小非零值

慕標5832272 2023-04-18 16:33:59
我試圖在 2d numpy 數組的每一行中找到最小的非零值,但還沒有找到一個優雅的解決方案。我看過其他一些帖子,但都沒有解決完全相同的問題,例如 Minimum value in 2d array或Min/Max excluding zeros but in 1d array。例如對于給定的數組:x = np.array([[3., 2., 0., 1., 6.], [8., 4., 5., 0., 6.], [0., 7., 2., 5., 0.]])答案是:[1., 4., 2.]
查看完整描述

4 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

一種方法是將零重新分配給 np.inf,然后每行取最小值:

np.where(x>0, x, np.inf).min(axis=1)

輸出:

array([1., 4., 2.])


查看完整回答
反對 回復 2023-04-18
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

屏蔽陣列正是為這些目的而設計的。您可以利用數組中的掩碼零(或您想要的任何其他類型的掩碼),并在您的掩碼數組上執行您在常規數組上所做的大部分工作:


import numpy.ma as ma

mx = ma.masked_array(x, mask=x==0)

mx.min(1)

輸出:


[1.0 4.0 2.0]


查看完整回答
反對 回復 2023-04-18
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

# example data

x = np.array([[3., 2., 0., 1., 6.], [8., 4., 5., 0., 6.], [0., 7., 2., 5., 0.]])


# set all the values inside the maxtrix which are equal to 0, to *inf*

# np.inf represents a very large number

# inf, stands for infinity

x[x==0] = np.inf


# grep the lowest value, in each array (now that there is no 0 value anymore)

np.min(x, axis=1)


查看完整回答
反對 回復 2023-04-18
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

我用這種方式解決了,時間復雜度是o(n^2).


import numpy as np

x = np.array([[3., 2., 0., 1., 6.], [8., 4., 5., 0., 6.], [0., 7., 2., 5., 0.]])


for i in range(len(x)) :

    small=x[i][i]

    for j in x[i] :

        if (j!=0 and j<small):

            small=j

    print(small)


查看完整回答
反對 回復 2023-04-18
  • 4 回答
  • 0 關注
  • 316 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號