Numpy介绍5
排序和索引
import numpy as np
#data = np.sin(np.arange(20)).reshape(5,4)
#print data
#ind = data.argmax(axis=0)#data.argmax找到的是索引
#axis为0,其实是说根据第0个维度进行计算。比如5行4列。是去掉行向量,得到每列的最大值。
#print ind#打印出来的是索引。
#data_max = data[ind, range(data.shape[1])]
#print data_max
#data.max快速找到最大值
all(data_max == data.max(axis=0))
True
import numpy as np
data = np.sin(np.arange(24)).reshape(2,3,4)
print(data)
ind = data.argmax(axis=0)
print(ind)
[[[ 0. 0.84147098 0.90929743 0.14112001]
[-0.7568025 -0.95892427 -0.2794155 0.6569866 ]
[ 0.98935825 0.41211849 -0.54402111 -0.99999021]]
[[-0.53657292 0.42016704 0.99060736 0.65028784]
[-0.28790332 -0.96139749 -0.75098725 0.14987721]
[ 0.91294525 0.83665564 -0.00885131 -0.8462204 ]]]
[[0 0 1 1]
[1 0 0 0]
[0 1 1 1]]
.titl()方法复制扩展
a = np.arange(0, 40, 10)
b = np.tile(a, (3, 5))
print b
[[ 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30]
[ 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30]
[ 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30 0 10 20 30]]
求最大值,排序等统计计算会损失数据信息量作为代价,第一个参数是矩阵本身,第二个参数是损失的向量。
a = np.arange(0, 40, 10)
print a
print '---'
b = np.tile(a, (1, 4))
print b
#print a
#print b
a = np.array([[4, 3, 5], [1, 2, 1]])
#print a
#b = np.sort(a, axis=1)#所谓的排序,统计一定是要损失信息量作为代价。看,这次列值就损失了原本的信息。
#print b
#b
#a.sort(axis=1)
#print a
a = np.array([4, 3, 1, 2])
j = np.argsort(a)#argmax和argsort都是得出索引。排序默认从小到大排序。
print j
print a[j]
[2 3 1 0]
[1 2 3 4]