我试图在 ndarray(numpy) 中提取一些边界的最大值。
例如,有大小为 (30000,1000) 的 ndarray N,我想为每行提取具有某些边界的最大值((最大值索引)-100 ~(最大值索引)+100)。
所以我写了这样的代码
for item in N:
item = item(item.argmax()-100 : item.argmax()+100)
但在完成这项任务后,我仍然为 N.shape (30000,1000)
如果我想为 N.shape 值 (30000,200),我应该运行什么代码?
您的代码的一个问题是您并不总是在最大值附近获得 200 个值。想象一下你在一行中的最大值是第二个值,那么你只会得到 102 个值。所以将它转换回一个 numpy 数组无论如何都行不通。
我的建议,创建一个新列表并将每个项目附加到列表中,即
# Import
import numpy as np
# Random data
N=np.random.random((30000,1000))
# List for new results
Nnew=[]
# Loop
for item in N:
item = item[max([0,item.argmax()-100]) : item.argmax()+100]
Nnew.append(item)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句