在Numpy中建立了数组或者矩阵后,需要访问数组里的成员,改变元素,并对数组进行切分和计算。
索引和切片
Numpy数组的访问模式和python中的list
相似,在多维的数组中使用,
进行区分:
在python的list
下:
a = [1,2,4]
print a[2:]
打印出:
[4]
这是一个数组,在Numpy的多维数组中也采用相同的模式进行数组的访问:
import numpy as np
a = np.arange(1,37)
a = a.reshape(6,6)
print a
打印:
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]
[13 14 15 16 17 18]
[19 20 21 22 23 24]
[25 26 27 28 29 30]
[31 32 33 34 35 36]]
a[1,1] = 8
print a
打印:
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]
[13 14 15 16 17 18]
[19 20 21 22 23 24]
[25 26 27 28 29 30]
[31 32 33 34 35 36]]
print a[1:4,3:]
打印:
[[10 11 12]
[16 17 18]
[22 23 24]]
在二维数组中较为简单,,
前面是横坐标,,
后面是纵坐标,可以用这种方式推广到多维的数组。
牢记这一点,再看看下面的布尔索引就简单多了:
>>> arr3 = (np.arange(36)).reshape(6,6)
>>> arr3
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
[24, 25, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35]])
>>> x = np.array([0, 1, 2, 1, 4, 5])
>>> arr3[x == 1]
array([[ 6, 7, 8, 9, 10, 11],
[18, 19, 20, 21, 22, 23]])
>>> arr3[:,x == 1]
array([[ 1, 3],
[ 7, 9],
[13, 15],
[19, 21],
[25, 27],
[31, 33]])
>>>
矩阵的运算
Numpy提供的较多的矩阵运算,可以查看相应的文档,这里介绍几种常见的运算方式来说明如何使用运算。
numpy.sum
对某一维进行求和运算:
import numpy as np
a = np.arange(1,7)
a = a.reshape(2,3)
print a
print np.sum(a)
# 21
#[[1 2 3]
#[4 5 6]]
print np.sum(a,0)
#[5 7 9]
print np.sum(a,1)
#[ 6 15]
同样的运算还用numpy.argmax
, numpy.mean
等。
数组中的运算是对每个元素进行的运算,如:
import numpy as np
a = np.arange(1,7)
a = a.reshape(2,3)
print 2*a
#[[ 2 4 6]
#[ 8 10 12]]
数组的点乘操作:
>>> a = [[1, 0], [0, 1]]
>>> b = [[4, 1], [2, 2]]
>>> np.dot(a, b)
array([[4, 1],
[2, 2]])
Numpy提供了大量的运算函数,在机器学习中也经常用到,对Numpy的熟悉,以后学起机器学习会轻松很多。
更多教程:阿猫学编程