python中找到第一个符合的数据点-python – 从满足条件的NumPy矩阵中的每一行中取N个第一个值...

方法#1

def takeN_le_per_row_broadcasting(a, b, N=3): # a, b : 1D, 2D arrays respectively

# First col indices in each row of b with <= corresponding one in a

idx = (b <= a[:,None]).argmax(1)

# Get all N ranged column indices

all_idx = idx[:,None] + np.arange(N)

# Finally advanced-index with those indices into b for desired output

return b[np.arange(len(all_idx))[:,None], all_idx]

方法#2

from skimage.util.shape import view_as_windows

def takeN_le_per_row_strides(a, b, N=3): # a, b : 1D, 2D arrays respectively

# First col indices in each row of b with <= corresponding one in a

idx = (b <= a[:,None]).argmax(1)

# Get 1D sliding windows for each element off data

w = view_as_windows(b, (1,N))[:,:,0]

# Use fancy/advanced indexing to select the required ones

return w[np.arange(len(idx)), idx]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值