@Dukebf
2017-07-12T00:01:34.000000Z
字数 1651
阅读 2451
python
Numpy
前人轮子
Numpy快速处理数据
python中的矩阵运算
>>> a = numpy.array([[1,2,3,4]]) # 生成二维矩阵
>>> a
array([[1, 2, 3,4]])
>>> a.shape # 获取矩阵的行列信息
(1, 4)
>>> a.reshape(2,2) # 任意修改维数
array([[1, 2],
[3, 4]])
arange(开始值,终值,步长):类似Python的range(),注意不包括终值
>>> numpy.arange(1,5,1)
array([1, 2, 3, 4])
快速生成0-9的二维数组
>>> numpy.arange(10).reshape(1,10)
array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
linspace(开始值, 终值, 元素个数): 默认包括终值,可以使用endpoint设置是否包括终值
>>> numpy.linspace(0,1,4)
array([ 0. , 0.33333333, 0.66666667, 1. ])
fromstring(字符串, dtype=?):从字节创建数组
>>> numpy.fromstring('abc',dtype=numpy.int8)
array([97, 98, 99], dtype=int8)
产生一个长度为10,元素值为0-1的随机数的数组
>>> numpy.random.rand(10)
array([ 0.16730282, 0.12528572, 0.64197928, 0.19406358, 0.15757446,
0.32640898, 0.82600455, 0.37855706, 0.99059003, 0.46203915])
randint(min,max,size=(row,col))
随机整数
>>> numpy.random.randint(1,10,size=(1,5))
array([[9, 5, 5, 2, 1]])
>>> numpy.random.randint(10,size=(1,5))
array([[1, 7, 2, 8, 0]])
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> a[:,1] # 取第一列,从0开始
array([ 1, 5, 9, 13])
>>> a[1,:] # 取第一行
array([4, 5, 6, 7])
>>> a[1::]
array([[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> a[::,-1] # 取最后一列
array([ 3, 7, 11, 15])
和Python的列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图。它与原始数组共享同一块数据空间:
>>> a
array([1, 2, 3, 4, 5, 6, 7, 8])
>>> b = a[2:6]
>>> b
array([3, 4, 5, 6])
>>> b[0] = 9
>>> b
array([9, 4, 5, 6])
>>> a
array([1, 2, 9, 4, 5, 6, 7, 8])
numpy.dot(aMtx,bMtx)
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> b
array([[0],
[1],
[2]])
>>> numpy.dot(a,b)
array([[ 5],
[14],
[23]])
ndarray 中,* 表示点乘,而 numpy.matrix() 类型的 * 则表示矩阵相乘.
>>> a*b
array([[ 0, 0, 0],
[ 3, 4, 5],
[12, 14, 16]])