python numpy.argpartition

a = [9,1,8,2,7,3,0,6,4,5,14,56,110]
ind = np.argpartition(a, -4)[-4:][::-1]
b = []
for i in ind:
  print a[i]
  b.append(a[i])
print 'b:',b
c = sorted(b,reverse=True)
print c

结果:

9
14
56
110
b: [9, 14, 56, 110]
[110, 56, 14, 9]

例子:

import numpy as np
def get_top_n(dist, labels, retrieval_top_n=5):
    ind = np.argpartition(dist, -retrieval_top_n)[-retrieval_top_n:][::-1]
    print type(ind)
    print 'ind:',ind
    for i in ind:
        print a[i],
    ret = list(zip([labels[i] for i in ind], dist[ind]))
    ret = sorted(ret, key=lambda x: x[1], reverse=True)
    return ret
if __name__ == '__main__':
    a = np.array([9, 1, 8, 2, 7, 3, 0, 6, 4, 5])
    b = ['1.jpg','2.jpg','3.jpg','4.jpg','5.jpg','6.jpg','7.jpg','8.jpg','9.jpg','10.jpg']
    e = get_top_n(a,b,retrieval_top_n=5)
    print e

结果:

<type 'numpy.ndarray'>
ind: [0 2 4 7 9]
9 8 7 6 5 [('1.jpg', 9), ('3.jpg', 8), ('5.jpg', 7), ('8.jpg', 6), ('10.jpg', 5)]

3.

import numpy as np
def get_top_n(dist, labels, retrieval_top_n=5):
    ind = np.argpartition(dist, -retrieval_top_n)[-retrieval_top_n:][::-1]
    print type(ind)
    print 'ind:',ind
    for i in ind:
        print a[i],
    ret = list(zip([labels[i] for i in ind], dist[ind]))
    ret = sorted(ret, key=lambda x: x[1], reverse=True)
    return ret
if __name__ == '__main__':
    a = np.array([-9, -1, -8, -2, -7, -3, -0, -6, -4, -5])
    b = ['1.jpg','2.jpg','3.jpg','4.jpg','5.jpg','6.jpg','7.jpg','8.jpg','9.jpg','10.jpg']
    e = get_top_n(a,b,retrieval_top_n=5)
    print e

结果:

<type 'numpy.ndarray'>
ind: [6 1 3 5 8]
0 -1 -2 -3 -4 [('7.jpg', 0), ('2.jpg', -1), ('4.jpg', -2), ('6.jpg', -3), ('9.jpg', -4)]

4.expand_dims(a, axis)就是在axis的那一个轴上把数据加上去,这个数据在axis这个轴的0位置。 
例如原本为一维的2个数据,axis=0,则shape变为(1,2),axis=1则shape变为(2,1) 
再例如 原本为 (2,3),axis=0,则shape变为(1,2,3),axis=1则shape变为(2,1,3)

import numpy as np

a = np.array([1,2,3,4,5,6])
print a
b = np.expand_dims(a, axis=0) # [[1 2 3 4 5 6]]
print b
print b.shape  #(1,6)
c = np.expand_dims(a, axis=1)
print c
print c.shape # (6, 1)
'''
[[1]
 [2]
 [3]
 [4]
 [5]
 [6]]

'''

猜你喜欢

转载自blog.csdn.net/nanxiaoting/article/details/81461383