刷Python小屋的时候连续遇到五六道题关于——求array类型二维数组下元素中数值等于特定值的整数之和,这类的问题,整理一下。
传统方法:用for循环来遍历,使用if取特定值
但是这样效率比较低,(Python小屋的题目里不让用for循环),所以本文使用array类型的简便方法。
原理:
#arr为一个array类型的数组
def f(arr):
return arr%3==0
flag=f(arr)
print(flag)
print(arr[f]) #如果flag相同位置上为True,返回arr上元素的值,返回的array形状为(m,1)
1.求array类型中所有偶数之和
import numpy as np
def func(arr):
return sum(arr[arr%2==0])
2. 求array类型中所有大于20的偶数之和
def func(arr):
arr1=arr[arr>20]
return arr1[arr1%2==0]
3.返回array数组中所有能被2整除或者被7整除的整数之和
def func(arr):#默认arr是一个整数数组
p1=arr%2==0
p2=arr%7==0
return arr[p1+p2]
4.返回array类型中下标为col的元素中数值为value的那些行的整数之和
def func(arr,col,value):
flag=arr[:,col,col+1]==value
flag=flag.flatten()
return sum(sum(arr[flag,:]))