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]]
'''