python numpy 数组如何对每个元素进行操作

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]]

猜你喜欢

转载自blog.csdn.net/th_num/article/details/80327945