从这一篇开始,我就不说那么多废话了,争取做到言简意赅。
先来讲一下索引吧,会MATLAB的同学一看便知
data1=[[2,3,4,5],[3,4,5,6]]
ndata1=numpy.array(data1)
print ndata1
得到结果
[[2 3 4 5]
[3 4 5 6]]
如果执行以下代码
print ndata1[:,1]
print ndata1[:1,:]
print ndata1[:,2:3]
得到结果
[3 4]
[[2 3 4 5]]
[[4]
[5]]
这个和python列表索引是一样的,这个就无需我多讲了。
下面我们玩一下花式索引,
执行以下代码
ndata2=numpy.empty((2,4)) print ndata2 for i in range(2):
ndata2[i]=i print ndata2
得到结果
[[ 1.58010617e-316 1.58169702e-316 1.58169702e-316
1.58169702e-316] [ 1.58169702e-316 1.58178950e-316 1.58172903e-316 1.58166856e-316]] [[ 0. 0. 0. 0.] [ 1. 1. 1. 1.]]
当然也可以这么玩
print ndata2[[1]]
得到结果
[[1,1,1,1]]
那么双中括号与单中括号的区别在哪里呢
print len(ndata2[[1]])
print len(ndata2[1]
得到结果
1
4
两个中括号选取的是子集,而一个中括号选取的是当前索引所指向的数据
下面讲一下转置和轴变换,转置非常的简单
print ndata2.T
轴变换如下所示
print ndata2.reshape(4,2)
[[ 0. 0.]
[ 0. 0.]
[ 1. 1.]
[ 1. 1.]]
下一章我们开始讲numpy中线性代数的运算