如何将列表(numpy数组)列表中的一系列值转换为一个数字,并将所有其他数字保留原样, 我试过了
np.where(array!= range(-1024,0),array,0))
但是这个给了我一个错误,关于我如何这样做的任何建议,在此先感谢。
答案 0 :(得分:3)
您可以使用isin
即
array = np.array([-150,105,250,-520,-1024,-1050])
np.where( ~np.isin(array, np.arange(-1024,0)) , array, 0)
array([ 0, 105, 250, 0, 0, -1050])
答案 1 :(得分:2)
您可以使用
np.where(np.logical_and(a>=-1024 , a<=0),0,a)
这将检查a的元素是否在[-1024,0]范围内并使其为0,否则保持不变。
答案 2 :(得分:0)
为什么不是一个简单的列表理解:
[e if e not in range(-1024,0) else 0 for e in array]
或等效(更直接):
[0 if e in range(-1024,0) else e for e in array]
编辑:可能有人认为基于列表的答案更容易阅读,但它比基于numpy的答案要慢得多(想想3.76 µs
vs 453 µs
!)所以我想坚持不懈的答案。