总结平时用到的一些巧妙地python操作语句
- 假设我有个np数组a,想获取其大于某个阈值
threshold
的所有子集及其编号(可以很明显的看到,后面的代码水平和函数的水平差远了。。。)
a = np.array([1,2,3,4,5,4,3,2,1,2,3,4,5,6,4,3,2,1])
def split_diff_step(signal, threshold):
# a = np.array([4, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 4, 3, 2, 1, 4])
index = np.linspace(0, signal.shape[0] - 1, num=signal.shape[0]).astype(int)
return np.split(signal, np.where(np.diff(signal > threshold))[0] + 1)[1::2], \
np.split(index, np.where(np.diff(signal > threshold))[0] + 1)[1::2]
a = np.array([1,2,3,4,5,4,3,2,1,2,3,4,5,6,4,3,2,1])
# 注意这里第一个值即a[0]一定要小于阈值,否则得到的结果就会变成期望集合的补集
value, index = split_diff_step(a, 3)
print(value)
[array([4, 5, 4]), array([4, 5, 6, 4])]
print(index)
[array([3, 4, 5]), array([11, 12, 13, 14])]
- 统计numpy矩阵中值为255的个数,尤其适用于统计二值图白色像素点个数
import numpy as np
a = [[1,2,3,2],[3,4,2,1]]
a = np.array(a)
print(np.sum(a == 1))