有时查找、排序等常用功能,我们习惯for循环,其实有很多python自带的方法可以简洁的实现。
排序
f=[1,3,4,1,8,5]
f.sort()
1, 1, 3, 4, 5, 8
f2 = np.random.permutation(10)
f2 = np.sort(f2)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
查找/索引
knights = ['we', 'are', 'the', 'knights', 'we', 'are', 'champion']
knights.index('we')
knights.sort(key=len)
0 (注意该方法只返回第一个满足条件的)
'we', 'we', 'are', 'the', 'are', 'knights', 'champion'
label = np.array([1,0,1,1,1,0,0,1,0,0,0,0,0,0,1])
f3 = np.argwhere(label > 0)
f3=np.squeeze(f3)
array([ 0, 2, 3, 4, 7, 14])
data = np.random.randn(3,3)
f4=data>0
data[f4]=1
f4
array([[ True, True, False],
[ True, False, False],
[False, False, False]])
data
array([[ 1. , 1. , -1.04329905],
[ 1. , -1.56508501, -1.00704463],
[-0.4731849 , -0.7953748 , -0.32791971]])
去重
mylist = [1, 1, 2, 3, 4, 'ok','ok']
a=set(mylist)
type(a)
mylist=list(a)
set
[1, 2, 3, 4, 'ok']
data = np.array([[1,8,3,3,4],
[1,8,9,9,4],
[1,8,3,3,4]])
#删除整个数组的重复元素
uniques1 = np.unique(data)
#删除重复行
uniques2 = np.unique(data,axis=0)
#删除重复列
uniques3 = np.unique(data,axis=1)
print(uniques1,'\n','\n',uniques2,'\n','\n',uniques3)
[1 3 4 8 9]
[[1 8 3 3 4]
[1 8 9 9 4]]
[[1 3 4 8]
[1 9 4 8]
[1 3 4 8]]
更多数学原理小文请关注公众号:未名方略