python filter 如何应用在numpy array中,比如我有一个二维numpy数组,想将数组中小于0的置零大于零的保留原值,但是不想用for循环。
import numpy as np
a=np.random.randint(-5,5,(4,4))
print(a)
#第一种方式
a=np.maximum(a,0)
print(a)
a=np.random.randint(-5,5,(4,4))
print(a)
#第二种方式
a=(a+np.abs(a))/2
print(a)
a=np.random.randint(-5,5,(4,4))
print(a)
#第三种方式
a[a<0]=0
print(a)
a=np.random.randint(-5,5,(4,4))
print(a)
#第四种方式
a=np.where(a>0,a,0)
print(a)
输出:
第一种方式
[[-3 -2 3 -1]
[ 2 3 0 1]
[-1 -1 0 4]
[ 2 -4 0 -4]]
[[0 0 3 0]
[2 3 0 1]
[0 0 0 4]
[2 0 0 0]]
#第二种方式
[[-1 -4 -3 -4]
[ 1 0 -4 -1]
[ 3 2 -3 2]
[-2 1 -5 -2]]
[[ 0. 0. 0. 0.]
[ 1. 0. 0. 0.]
[ 3. 2. 0. 2.]
[ 0. 1. 0. 0.]]
第三种方式
[[-1 3 1 2]
[ 4 0 2 -4]
[-2 -2 0 3]
[-5 -3 3 -1]]
[[0 3 1 2]
[4 0 2 0]
[0 0 0 3]
[0 0 3 0]]
#第四种方式
[[-4 -2 -2 1]
[-4 -4 -3 -5]
[ 3 3 2 1]
[-4 3 3 1]]
[[0 0 0 1]
[0 0 0 0]
[3 3 2 1]
[0 3 3 1]]