ufunc函数
1.常用ufunc函数运算
四则运算: | 加(+)、减(一)、乘(*)、除(/)、幂(×*)。数组间的四则运算表示对每个数组中的元素分别进行四则运算,所以形状必须相同。 |
比较运算: | >、<、==、>=、<=、!=。比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果。 |
逻辑运算: | np.any函数表示逻辑“or”;np.all函数表示逻辑“and”,运算结果返回布尔值。 |
例题1:
x = np.array([1, 2,3])
y = np.array([4, 5, 6])
print('数组相加结果:',x+y)
print('数组相减结果:',x-y)
print('数组相乘结果:',x*y)
print('数组幂运算结果:',x**y)
例题2:
x = np.array([1, 3,6])
y = np.array([2,3,4])
print('比较结果(<):', x<y)
print('比较结果(>):', x>y)
print('比较结果(==):',x==y)
print('比较结果(>=):',x>=y)
print('比较结果(!=):',x!=y)
2.ufunc函数的广播机制(broadcasting)
(1)让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。 |
(2)输出数组的shape是输入数组shape的各个轴上的最大值。 |
(3)如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。 |
(4)当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。 |
例题3:
arrl = np.array([[0, 0,0], [1, 1, 1], [2,2,2]])
arr2 = np.array([1, 2,3])
print('arrl:\n', arrl)
print('arr2:\n', arr2)
print('arr1 + arr2:\n', arrl + arr2)
条件逻辑运算---where函数
1.where的用法:np.where(condition, x, y)
如果满足条件(condition)输出x;不满足则输出y。(类似于C语言的A?B:C)
2.例题4:
print(np. where([[True, False]. [True, True]], [[1, 2],[3,4]],[[9,8],[7,6]]))
解释:在这个例子中条件为[[True, False],[True, True]], 分别对应最后输出结果的4个值,运算时第一个值从[1,9]中选,因为条件为True, 所以选1;第二个值从[2, 8]中选,因为条件为False,所以选8,后面以此类推。
3.例题5:(只有condition参数的情况)
w = np.array([2, 5, 6, 3, 10])
print(np. where(w> 4))
解释:where中若只有条件(condition),没有x和y,则输出满足条件元素的坐标。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。