3 回答

TA貢獻1886條經(jīng)驗 獲得超2個贊
您可以使用broadcasting:
a = np.arange(24).reshape(4,6)
thresh = np.array([3, 7, 9, 11, 13, 15])
a > thresh[None,:]
輸出:
array([[False, False, False, False, False, False],
[ True, False, False, False, False, False],
[ True, True, True, True, True, True],
[ True, True, True, True, True, True]])

TA貢獻1876條經(jīng)驗 獲得超5個贊
這里
m
是原始矩陣thresh_vals
是閾值列表(np 數(shù)組)rep_vals
是要填充 m < thresh_vals 的相應(yīng)值的列表
通過以下方式設(shè)置閾值和替換值:
m = np.random.rand(4,4)
thresh_vals = np.array([0.25, 0.5, 0.75, 1.0])
m_thresh = np.repeat(thresh_vals.reshape(1,4), 4, axis=0)
rep_vals = np.array([0, 0.1, 0.01, 0.001])
m_rep = np.repeat(rep_vals.reshape(1,4), 4, axis=0)
mask = m < thresh_vals
m[mask] = m_rep[mask]
# m:
[[0.85129154 0.76109774 0.20486053 0.07527921]
[0.97887779 0.70202094 0.11273641 0.98444799]
[0.50364255 0.05257619 0.58271136 0.41479196]
[0.39269314 0.01727273 0.81580523 0.93713313]]
# m after threshold applied, filled with `rep_vals`:
[[0.85129154 0.76109774 0.01 0.001 ]
[0.97887779 0.70202094 0.01 0.001 ]
[0.50364255 0.1 0.01 0.001 ]
[0.39269314 0.1 0.81580523 0.001 ]]

TA貢獻1828條經(jīng)驗 獲得超13個贊
只需直接將您的矩陣與閾值數(shù)組進行比較
如果 x 是 [n,m] numpy 數(shù)組并且 t 是 [m,] numpy 數(shù)組
x > t
返回一個布爾[n,m]數(shù)組,檢查x中的每一列是否大于t中相應(yīng)的閾值
例子:
import numpy as np
v = np.array([
[0,1,2],
[1,2,3],
[2,3,4]])
t = np.array([1,2,3])
v >= t
>> array([[False, False, False],
[ True, True, True],
[ True, True, True]])
添加回答
舉報