import numpy as np
w=np.array([546,12,3,456,45,12])
wb = np.argsort(w)
#值最小的数据的索引为2,最大的为索引为0的数据,按照升序进行排序索引
print(wb)
wc=w[wb[:4]] #得到最小的四个数据的具体值
print(wc)
print(np.bincount(wc)) #统计每个数字的个数,例如索引为0的位置表示0出现的次数
print(np.argmax(np.bincount(wc))) #argmax给出最大值的索引,因为bincount正好是每个点的数字与索引对应
上面对应的输出结果为
[2 1 5 4 3 0]
[ 3 12 12 45]
[0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1]
12
np.array类型的数据中可以传入一个列表,这个列表中每个值都代表一个索引,所以可以使用一个变量里面传入一个列表获得每个索引位置的点,但是对于列表类型的数据不能这样,会报错
TypeError: list indices must be integers or slices, not list
dist = np.array([[12,45,63,45],
[15,445,4,45],
[452,45,54,425],
[124,455,63,45],
[12,45,243,45]])
c_ind = np.argmin(dist,axis=1)
print(type(c_ind))
c_in = [0,2, 1, 3, 0]
print(c_ind)
x_new = x[:5]
print(x_new)
print(x_new[c_ind==0])
#只有ndarry类型才可以这样操作,找到x_ind=0值的索引位置,把得到的值当做x_new的索引进行取值
print(x_new[c_in==2])
输出的结果为:
<class 'numpy.ndarray'>
[0 2 1 3 0]
[[ 3.93109126 -3.86427967]
[10.10268877 3.99643886]
[ 3.9499022 -2.26538468]
[-4.92854709 2.07922709]
[ 5.14252182 -1.95119219]]
[[ 3.93109126 -3.86427967]
[ 5.14252182 -1.95119219]]
[]