numpy_sheet

结合着: numpy常用矩阵计算函数总结

>>>import numpy as np
# 创建数组
# np.array([(中填入想要创建的数组,若多维则将每一维用括号括起来,括号之间用,相隔])
>>>np.array([(1.0,2,3),(3,4,5)])

[out]array([[ 1.,  2.,  3.],
       [ 3.,  4.,  5.]])
>>>np.arange(1,20,4)
[out]array([ 1,  5,  9, 13, 17])
>>>np.linspace(0,2,9) # 两位小数,小数位数不足两位时用空格补全
[out]array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ,  1.25,  1.5 ,  1.75,  2.  ])
>>>np.zeros((1,2)) # 1行2列0
>>>np.ones((1,2))# 1行2列1
>>>np.random.random((5,5))# 5行5列随机数(0-1)
>>>np.empty((2,2))# 1行2列0.
>>>arr1 = np.random.random((5,4))
>>>print 'shape: %s, length: %s, dimention:%s, size: %s, data type: %s' % (arr1.shape,len(arr1),arr1.ndim,arr1.size,arr1.dtype)
[out]shape: (5L, 4L), length: 5, dimention:2, size: 20, data type: float64
>>>arr1.astype(int)
>>>print type(arr1),'\n'
>>>arr2 = np.copy(arr1)
>>>other = arr1.copy()
>>>arr1.sort() # 默认axis=0,即按照行从小到大排列
>>>print arr1,'\n'
>>>arr1.sort(axis=1) # 将每一列按照从小到大排序
>>>print arr1
[out]
<type 'numpy.ndarray'> 

[[ 0.03890902  0.14826119  0.16275598  0.67276205]
 [ 0.13559738  0.19002854  0.52015957  0.68160368]
 [ 0.1879642   0.38801809  0.58606979  0.69546223]
 [ 0.39901827  0.44439364  0.64573481  0.76457091]
 [ 0.46092613  0.51445446  0.65365999  0.7692214 ]] 

[[ 0.03890902  0.14826119  0.16275598  0.67276205]
 [ 0.13559738  0.19002854  0.52015957  0.68160368]
 [ 0.1879642   0.38801809  0.58606979  0.69546223]
 [ 0.39901827  0.44439364  0.64573481  0.76457091]
 [ 0.46092613  0.51445446  0.65365999  0.7692214 ]]
>>>print arr1,'\n',arr2
>>>arr3 = np.append(arr1,arr2) # 将arr1 和 arr2逐行顺次连接并转化为一个数组
>>>print arr3,arr3.ndim
>>>print '------------------------111-----------------------------------------------'
>>>arr4 = np.insert(arr1, 1, (2,3,4,5,6),axis = 1) # 将第一列换成(2,3,4,5),原数组并没有改变
>>>print arr4
>>>print '-------------------------222----------------------------------------------'
>>>arr3.resize((4,arr3.size/4)) # 第一个参数是列数
>>>print arr3
>>>arr5 = np.delete(arr3,(1,2),0) # np.delete(array,(1,2),axis),按照axis=0横坐标,删除第12行,同时原数组并没有发生改变
>>>print '-------------------------333----------------------------------------------'
>>>print arr5
[out]
[[ 0.03890902  0.14826119  0.16275598  0.67276205]
 [ 0.13559738  0.19002854  0.52015957  0.68160368]
 [ 0.1879642   0.38801809  0.58606979  0.69546223]
 [ 0.39901827  0.44439364  0.64573481  0.76457091]
 [ 0.46092613  0.51445446  0.65365999  0.7692214 ]] 
[[ 0.03890902  0.14826119  0.16275598  0.67276205]
 [ 0.13559738  0.19002854  0.52015957  0.68160368]
 [ 0.1879642   0.38801809  0.58606979  0.69546223]
 [ 0.39901827  0.44439364  0.64573481  0.76457091]
 [ 0.46092613  0.51445446  0.65365999  0.7692214 ]]
[ 0.03890902  0.14826119  0.16275598  0.67276205  0.13559738  0.19002854
  0.52015957  0.68160368  0.1879642   0.38801809  0.58606979  0.69546223
  0.39901827  0.44439364  0.64573481  0.76457091  0.46092613  0.51445446
  0.65365999  0.7692214   0.03890902  0.14826119  0.16275598  0.67276205
  0.13559738  0.19002854  0.52015957  0.68160368  0.1879642   0.38801809
  0.58606979  0.69546223  0.39901827  0.44439364  0.64573481  0.76457091
  0.46092613  0.51445446  0.65365999  0.7692214 ] 1
------------------------111-----------------------------------------------
[[ 0.03890902  2.          0.14826119  0.16275598  0.67276205]
 [ 0.13559738  3.          0.19002854  0.52015957  0.68160368]
 [ 0.1879642   4.          0.38801809  0.58606979  0.69546223]
 [ 0.39901827  5.          0.44439364  0.64573481  0.76457091]
 [ 0.46092613  6.          0.51445446  0.65365999  0.7692214 ]]
-------------------------222----------------------------------------------
[[ 0.03890902  0.14826119  0.16275598  0.67276205  0.13559738  0.19002854
   0.52015957  0.68160368  0.1879642   0.38801809]
 [ 0.58606979  0.69546223  0.39901827  0.44439364  0.64573481  0.76457091
   0.46092613  0.51445446  0.65365999  0.7692214 ]
 [ 0.03890902  0.14826119  0.16275598  0.67276205  0.13559738  0.19002854
   0.52015957  0.68160368  0.1879642   0.38801809]
 [ 0.58606979  0.69546223  0.39901827  0.44439364  0.64573481  0.76457091
   0.46092613  0.51445446  0.65365999  0.7692214 ]]
-------------------------333----------------------------------------------
[[ 0.03890902  0.14826119  0.16275598  0.67276205  0.13559738  0.19002854
   0.52015957  0.68160368  0.1879642   0.38801809]
 [ 0.58606979  0.69546223  0.39901827  0.44439364  0.64573481  0.76457091
   0.46092613  0.51445446  0.65365999  0.7692214 ]]
-------------------------444----------------------------------------------
[[ 0.03890902  0.14826119  0.16275598  0.67276205  0.03890902  0.14826119
   0.16275598  0.67276205]
 [ 0.13559738  0.19002854  0.52015957  0.68160368  0.13559738  0.19002854
   0.52015957  0.68160368]
 [ 0.1879642   0.38801809  0.58606979  0.69546223  0.1879642   0.38801809
   0.58606979  0.69546223]
 [ 0.39901827  0.44439364  0.64573481  0.76457091  0.39901827  0.44439364
   0.64573481  0.76457091]
 [ 0.46092613  0.51445446  0.65365999  0.7692214   0.46092613  0.51445446
   0.65365999  0.7692214 ]]
>>>arr3 = np.concatenate((arr1,arr2),axis=1) # 连接,此处是按照纵坐标拼到右面
>>>arr4 = np.vstack((arr1,arr2))# 连接,此处是按照横坐标拼到下面
>>>arr5 = np.hstack((arr1,arr2))# 连接,此处是按照纵坐标
>>>print arr3,'\n',arr4,'\n',arr5
[out]
[[ 0.03890902  0.14826119  0.16275598  0.67276205  0.03890902  0.14826119
   0.16275598  0.67276205]
 [ 0.13559738  0.19002854  0.52015957  0.68160368  0.13559738  0.19002854
   0.52015957  0.68160368]
 [ 0.1879642   0.38801809  0.58606979  0.69546223  0.1879642   0.38801809
   0.58606979  0.69546223]
 [ 0.39901827  0.44439364  0.64573481  0.76457091  0.39901827  0.44439364
   0.64573481  0.76457091]
 [ 0.46092613  0.51445446  0.65365999  0.7692214   0.46092613  0.51445446
   0.65365999  0.7692214 ]] 
[[ 0.03890902  0.14826119  0.16275598  0.67276205]
 [ 0.13559738  0.19002854  0.52015957  0.68160368]
 [ 0.1879642   0.38801809  0.58606979  0.69546223]
 [ 0.39901827  0.44439364  0.64573481  0.76457091]
 [ 0.46092613  0.51445446  0.65365999  0.7692214 ]
 [ 0.03890902  0.14826119  0.16275598  0.67276205]
 [ 0.13559738  0.19002854  0.52015957  0.68160368]
 [ 0.1879642   0.38801809  0.58606979  0.69546223]
 [ 0.39901827  0.44439364  0.64573481  0.76457091]
 [ 0.46092613  0.51445446  0.65365999  0.7692214 ]] 
[[ 0.03890902  0.14826119  0.16275598  0.67276205  0.03890902  0.14826119
   0.16275598  0.67276205]
 [ 0.13559738  0.19002854  0.52015957  0.68160368  0.13559738  0.19002854
   0.52015957  0.68160368]
 [ 0.1879642   0.38801809  0.58606979  0.69546223  0.1879642   0.38801809
   0.58606979  0.69546223]
 [ 0.39901827  0.44439364  0.64573481  0.76457091  0.39901827  0.44439364
   0.64573481  0.76457091]
 [ 0.46092613  0.51445446  0.65365999  0.7692214   0.46092613  0.51445446
   0.65365999  0.7692214 ]]
# np.split()
>>>arr3 = np.array_split(arr1,3) # 将arr1切片成3个子array,以行为单位
>>>arr4 = np.hsplit(arr2,2) # # 将arr1切片成2个子array,以列为单位
>>>print arr3,'\n',arr4
[out]
[array([[ 0.03890902,  0.14826119,  0.16275598,  0.67276205],
       [ 0.13559738,  0.19002854,  0.52015957,  0.68160368]]), array([[ 0.1879642 ,  0.38801809,  0.58606979,  0.69546223],
       [ 0.39901827,  0.44439364,  0.64573481,  0.76457091]]), array([[ 0.46092613,  0.51445446,  0.65365999,  0.7692214 ]])] 
[array([[ 0.03890902,  0.14826119],
       [ 0.13559738,  0.19002854],
       [ 0.1879642 ,  0.38801809],
       [ 0.39901827,  0.44439364],
       [ 0.46092613,  0.51445446]]), array([[ 0.16275598,  0.67276205],
       [ 0.52015957,  0.68160368],
       [ 0.58606979,  0.69546223],
       [ 0.64573481,  0.76457091],
       [ 0.65365999,  0.7692214 ]])]
>>>other =arr1.flatten() # 两维变1维
>>>print other
>>>arr3 =np.transpose(arr1)# 转置
>>>print arr3
# arr2.T  # 转置
[out]
[ 0.03890902  0.14826119  0.16275598  0.67276205  0.13559738  0.19002854
  0.52015957  0.68160368  0.1879642   0.38801809  0.58606979  0.69546223
  0.39901827  0.44439364  0.64573481  0.76457091  0.46092613  0.51445446
  0.65365999  0.7692214 ]
[[ 0.03890902  0.13559738  0.1879642   0.39901827  0.46092613]
 [ 0.14826119  0.19002854  0.38801809  0.44439364  0.51445446]
 [ 0.16275598  0.52015957  0.58606979  0.64573481  0.65365999]
 [ 0.67276205  0.68160368  0.69546223  0.76457091  0.7692214 ]]
# 除最后一行外都是element-wise
>>>np.add(arr1,arr2)
# np.substract(arr1,arr2) 
>>>np.multiply(arr1,arr2)
>>>np.sqrt(arr1) 
>>>np.sin(arr1)
>>>np.cos(arr1)
>>>np.log(arr1)
>>>np.dot(arr1,arr2.T) # 矩阵点乘
[out]
array([[ 0.50259357,  0.57666598,  0.62810848,  0.70088323,  0.71809785],
       [ 0.57666598,  0.78964704,  0.87810138,  0.99557278,  1.02457303],
       [ 0.62810848,  0.87810138,  1.01303409,  1.15760977,  1.20431004],
       [ 0.70088323,  0.99557278,  1.15760977,  1.3582434 ,  1.42275354],
       [ 0.71809785,  1.02457303,  1.20431004,  1.42275354,  1.49608922]])
# 针对整个数组来说的,若为2维,可以指定横纵坐标
>>>arr1.mean()
>>>np.mean(arr1)
>>>np.median(arr1)
>>>arr1.std()
>>>np.corrcoef(arr1)
[out]
array([[ 1.        ,  0.83441978,  0.80433431,  0.85376926,  0.88596079],
       [ 0.83441978,  1.        ,  0.95796309,  0.99918037,  0.99289522],
       [ 0.80433431,  0.95796309,  1.        ,  0.96261479,  0.96853792],
       [ 0.85376926,  0.99918037,  0.96261479,  1.        ,  0.99689283],
       [ 0.88596079,  0.99289522,  0.96853792,  0.99689283,  1.        ]])
>>>arr1.sum() # Array-wise
>>>arr1.min() # Array-wise
>>>arr1.max(axis=0) 
>>>arr1.cumsum(axis=0) # 第n行是前n行的累加和
[out]
array([[ 0.03890902,  0.14826119,  0.16275598,  0.67276205],
       [ 0.1745064 ,  0.33828973,  0.68291554,  1.35436572],
       [ 0.3624706 ,  0.72630782,  1.26898533,  2.04982795],
       [ 0.76148887,  1.17070146,  1.91472014,  2.81439886],
       [ 1.22241499,  1.68515591,  2.56838013,  3.58362025]])
# Tricks
# Index trick when working with two np-arrays
>>>a = np.array([1,2,3,6,1,4,1])
>>>b = np.array([5,6,7,8,3,1,2])
# Only saves a at index where b == 1
>>>other_a = a[b == 1]
#Saves every spot in a except at index where b != 1
>>>other_other_a = a[b != 1]
>>>x = np.array([4,6,8,1,2,6,9])
>>>y = x > 5
>>>print x[y]
# Even shorter
>>>x = np.array([1, 2, 3, 4, 4, 35, 212, 5, 5, 6])
>>>print x[x < 5]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值