@Dukebf
2017-07-11T16:01:34.000000Z
字数 1651
阅读 2594
python Numpy
前人轮子
Numpy快速处理数据
python中的矩阵运算
>>> a = numpy.array([[1,2,3,4]]) # 生成二维矩阵>>> aarray([[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]])
>>> aarray([[ 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的列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图。它与原始数组共享同一块数据空间:
>>> aarray([1, 2, 3, 4, 5, 6, 7, 8])>>> b = a[2:6]>>> barray([3, 4, 5, 6])>>> b[0] = 9>>> barray([9, 4, 5, 6])>>> aarray([1, 2, 9, 4, 5, 6, 7, 8])
numpy.dot(aMtx,bMtx)
>>> aarray([[0, 1, 2],[3, 4, 5],[6, 7, 8]])>>> barray([[0],[1],[2]])>>> numpy.dot(a,b)array([[ 5],[14],[23]])
ndarray 中,* 表示点乘,而 numpy.matrix() 类型的 * 则表示矩阵相乘.
>>> a*barray([[ 0, 0, 0],[ 3, 4, 5],[12, 14, 16]])