np.where()
np.where(条件),若条件满足,返回索引值
np.where(条件,x,y),若条件满足,返回x,否则返回y
主要是运用在一维数组、二维数组、多维数组和根据元素找到对应的索引位置
- 一维数组中直接返回索引位置,但是是以数组的形式返回的,默认为int
- 二维数组中返回两组索引(分别是行纵坐标的索引)
- 多维数组中对应True类型的位置返回,其它的根据你设定的值进行输出
- 最后一个可根据元素的bool值,直接找到数组中对应的True的位置,然后通过np.where直接找到对应的行纵坐标。
具体代码:
import numpy as np
print("*-------------1 d---------------------*")
# 一维数组
a = np.array([1,2,3,4,5])
b = np.where(a>2)
c = np.where(a>2,a,0)
print(a)
print(b)
print(c)
print("*-------------2 d---------------------*")
# 二维数组
a1 = np.arange(4*5).reshape(4,5)
b1 = np.where(a1>9)
c1 = np.where(a1>9,a1,0)
print(a1)
print(b1)
print(c1)
print("*---------------multi d-----------------*")
a2 = np.arange(16).reshape(2,2,4)
b2 = np.where([True,False,True,False],a2,0)
print(a2)
print(b2)
print("*---------------find position-----------------*")
a3 = np.arange(4*5).reshape(4,5)
position = [5,9,15]
b3 = np.isin(a3,position)
c3 = np.where(b3)
print(a3)
print(b3)
print(c3)
运行结果:
np.logical_and/or/not
np.logical_and/or/not相当于逻辑与/或非。
具体代码:
import numpy as np
a = 0.65 # (0.8, 1] is positive
b = 0.3 # [0, 0.3] (0.65,0.8] is negative
c = 0.4 # (0.4, 0.65] is part faces
x = eval(input("please input a number:"))
if x>a:
print("this is a positive range.")
elif np.logical_and(x>c,x<=a):
print("this is a part range")
elif np.logical_or(np.logical_and(x>=0,x<=b),np.logical_and(x>a,x<=0.8)):
print("this is a negative range")
else:
print("0")
print(np.logical_not([a,b,c,0,True,False]))
运行结果: