您的位置:首页 > 编程语言 > Python开发

python 科学计算学习一:numpy快速处理数据(3)

2014-02-28 11:34 579 查看
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)

接下来就可以对这些数据操作了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  numpy 数据