python numpy 快速处理数据

来源:互联网 发布:中国雷达 知乎 编辑:程序博客网 时间:2024/05/19 09:15

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)

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


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩吃饭吃的少怎么办 宝宝突然晚上不睡觉怎么办 l岁宝宝吃多了怎么办 3个月婴儿厌食怎么办 11个月婴儿厌食怎么办 7个月的婴儿厌食怎么办 小孩记忆不好读书记不住怎么办 9岁儿童不爱睡觉怎么办 6岁儿童不爱吃饭怎么办 2岁半宝宝不吃饭怎么办 一年级的孩子不爱学习怎么办 小孩不爱写作业怎么办啊 孩子不爱看书怎么办如何教育 2岁宝宝不爱看书怎么办 儿媳妇比儿子年龄大我不喜欢怎么办 不喜欢儿子却生了儿子怎么办 静不下心来看书怎么办 孩子爱玩不爱学怎么办 孩子爱玩不爱学习怎么办 孩子爱玩手机不爱学习怎么办 照四维宝宝太活泼了怎么办 胎宝宝太活泼了怎么办 7个月宝宝太活泼怎么办 我是个初中生不想上学怎么办 3岁宝宝不肯说话怎么办 两周宝宝不爱吃饭怎么办 小孩不喜欢吃水果蔬菜怎么办 孩子对学习不感兴趣怎么办 幼儿园老师不喜欢我孩子怎么办 孩子数学不主动思考问题怎么办 孩子做事慢磨蹭家长应该怎么办 孩子不写作业怎么办啊 对孩子在校被欺怎么办 二年级的孩子不爱学习怎么办 孩子不爱学习怎么办二年级 二年级孩子不爱写作业怎么办 孩子喜欢的朋友家长不喜欢怎么办? 孩子不喜欢上幼儿园家长怎么办 孩子不喜欢家长学佛怎么办呢? 学生家长讨厌老师老师该怎么办 孩子不爱去幼儿园总是哭怎么办