python numpy 快速处理数据

1,广播:对形状不同的数组的运算采取的操作。但是这个输入的数组中必须有一个某轴长度为1,或者缺少了一个维度(这个时候会自动的在shape属性前面补上1)。例如:

>>> import numpy as np
>>> a=np.arange(10,50,10).reshape(-1,1)
>>> a.shape
(4, 1)
>>> b=np.arange(0,4)
>>> b
array([0, 1, 2, 3])
>>> b.shape
(4,)
>>> a+b
array([[10, 11, 12, 13],
       [20, 21, 22, 23],
       [30, 31, 32, 33],
       [40, 41, 42, 43]])

2,内积:np.dot(a,b) 就可以来计算a,b的内积,同样的np.inner(a,b)也可以,但是它要求最后一维度是要相同的,np.outer(a,b)则是将数组展平为一维数组再进行计算。

3,求和,平均值,方差:比较简单,分别是np.sum(), np.mean(), np.var(), np.std()(这个是标准差),关键是在加入axis参数以后要很好的区分;看下面的例子应该就比较清楚了:

求和:

>>> a
array([[6, 7, 1, 6],
       [1, 0, 2, 3],
       [7, 8, 2, 1]])
>>> np.sum(a)
44
>>> np.sum(a,axis=0)
array([14, 15,  5, 10])
>>> np.sum(a,axis=1)
array([20,  6, 18])
>>> np.sum(a,axis=-1)

均值:

>>> a
array([[6, 7, 1, 6],
       [1, 0, 2, 3],
       [7, 8, 2, 1]])
>>> np.mean(a)
3.6666666666666665
>>> np.mean(a,axis=0)
array([ 4.66666667,  5.        ,  1.66666667,  3.33333333])

方差:

>>> np.var(a)

7.7222222222222223
>>> np.var(a,axis=0)
array([  6.88888889,  12.66666667,   0.22222222,   4.22222222])
>>> np.std(a,axis=0)
array([ 2.62466929,  3.55902608,  0.47140452,  2.05480467])

4,最值和排序:最值有np.max(),np.min() 他们都有axis和out(输出)参数, 而通过np.argmax(), np.argmin()可以得到取得最大或最小值时的下标。排序通过np.sort(), 而np.argsort()得到的是排序后的数据原来位置的下标。

>>> a
array([[6, 7, 1, 6],
       [1, 0, 2, 3],
       [7, 8, 2, 1]])
>>> a.sort()
>>> a
array([[1, 6, 6, 7],
       [0, 1, 2, 3],
       [1, 2, 7, 8]])
>>> np.sort(a,axis=0)
array([[0, 1, 2, 3],
       [1, 2, 6, 7],
       [1, 6, 7, 8]])
>>> np.argsort(a,axis=0)
array([[1, 1, 1, 1],
       [0, 2, 0, 0],
       [2, 0, 2, 2]])

5,统计函数:unique()保留数组中不同的值,返回两个参数。bincount()对数组中各个元素出现的次数进行统计,还可以设定相应的 权值。

>>> b=np.random.randint(0,5,8)
>>> b
array([2, 3, 3, 0, 1, 4, 2, 4])

>>> np.unique(b)
array([0, 1, 2, 3, 4])

>>> c,s=np.unique(b,return_index=True)
>>> c
array([0, 1, 2, 3, 4])
>>> s
array([3, 4, 0, 1, 5])(元素出现的起始位置)


>>> b
array([2, 3, 3, 0, 1, 4, 2, 4])

>>> np.bincount(b)
array([1, 1, 2, 2, 2])  分别是0 1 2 3 4的个数;
>>> w=np.random.rand(8)
>>> w
array([ 0.29529445,  0.4554129 ,  0.69615963,  0.4766137 ,  0.97929591,
        0.46069939,  0.76476676,  0.74556715]) 权重值;
>>> np.bincount(b,w)。
array([ 0.4766137 ,  0.97929591,  1.06006121,  1.15157254,  1.20626654])权重和;


6,掩码数组:表示的是不完整的数据或是含有无效值的数据。

>>> import numpy.ma as ma
>>> b
array([2, 3, 3, 0, 1, 4, 2, 4])
>>> mask=b<3
>>> mx=ma.array(b,mask=mask)
>>> mx
masked_array(data = [-- 3 3 -- -- 4 -- 4],
             mask = [ True False False  True  True False  True False],fill_value = 999999)

接下来就可以对这些数据操作了。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值