美文网首页我爱编程
Python数据分析笔记-03

Python数据分析笔记-03

作者: 杨大菲 | 来源:发表于2018-01-25 21:25 被阅读0次

    1.为数组加上或者乘以一个标量

    >>> import numpy as np

    >>> a=np.array([1,2,3,4,5])

    >>> a

    array([1, 2, 3, 4, 5])

    >>> a*1

    array([1, 2, 3, 4, 5])

    >>> a

    array([1, 2, 3, 4, 5])

    >>> a*2

    array([ 2, 4, 6, 8, 10])

    >>> a

    array([1, 2, 3, 4, 5])

    2.两个数组进行计算

    1)元素数量相同

    >>> a

    array([1, 2, 3, 4, 5])

    >>> b=np.array([2,3,4,5,6])

    >>> b

    array([2, 3, 4, 5, 6])

    >>> a*b

    array([ 2, 6, 12, 20, 30])

    >>> a

    array([1, 2, 3, 4, 5])

    >>> b

    array([2, 3, 4, 5, 6])

    2)元素数量不同:会报错

    >>> b

    array([2, 3, 4, 5, 6])

    >>> c=np.array([3,4,5,6,7,8,9])

    >>> c

    array([3, 4, 5, 6, 7, 8, 9])

    >>> b*c

    Traceback (most recent call last):

     File "", line 1, in

    ValueError: operands could not be broadcast together with shapes (5,) (7,)

    3.可以对一个数组先进行函数运算,该函数运算返回值也是一个数组

    >>> a

    array([1, 2, 3, 4, 5])

    >>> b=np.sin(a)

    >>> b

    array([ 0.84147098, 0.90929743, 0.14112001, -0.7568025 , -0.95892427])

    4.多维数组的运算也是元素级别的

    >>> a=np.arange(9).reshape(3,3)

    >>> a

    array([[0, 1, 2],

          [3, 4, 5],

          [6, 7, 8]])

    >>> b=np.zeros((3,3))

    >>> b

    array([[ 0., 0., 0.],

          [ 0., 0., 0.],

          [ 0., 0., 0.]])

    >>> a*b

    array([[ 0., 0., 0.],

          [ 0., 0., 0.],

          [ 0., 0., 0.]])

    5.矩阵积

    1)c=np.dot(a,b)求a和b的矩阵积--第一种写法

    >>> a=np.arange(9).reshape(3,3)

    >>> b=np.random.random(9).reshape(3,3)

    >>> a

    array([[0, 1, 2],

          [3, 4, 5],

          [6, 7, 8]])

    >>> b

    array([[ 0.1752667 , 0.61713814, 0.63455636],

          [ 0.42635687, 0.9609163 , 0.40790306],

          [ 0.01270341, 0.29411413, 0.52187812]])

    >>> c=np.dot(a,b)

    >>> c

    array([[ 0.4517637 ,  1.54914457,  1.45165931],

          [ 2.29474465,  7.1656503 ,  6.14467194],

          [ 4.1377256 , 12.78215603, 10.83768457]])

    2)c=a.dot(b)

    >>> c=a.dot(b)

    >>> c

    array([[ 0.4517637 ,  1.54914457,  1.45165931],

          [ 2.29474465,  7.1656503 ,  6.14467194],

          [ 4.1377256 , 12.78215603, 10.83768457]])

    >>> a

    array([[0, 1, 2],

          [3, 4, 5],

          [6, 7, 8]])

    >>> b

    array([[ 0.1752667 , 0.61713814, 0.63455636],

          [ 0.42635687, 0.9609163 , 0.40790306],

          [ 0.01270341, 0.29411413, 0.52187812]])

    6.数组的自运算:不会新生数组,改变原数组

    >>> a

    array([[0, 1, 2],

          [3, 4, 5],

          [6, 7, 8]])

    >>> a+=1

    >>> a

    array([[1, 2, 3],

          [4, 5, 6],

          [7, 8, 9]])

    7.通用函数:ufunx

    对数组中的每个元素逐一进行操作,生成一个新数组,如平方根函数sqrt() 对数函数 log() 正弦函数sin()

    >>> a

    array([[1, 2, 3],

          [4, 5, 6],

          [7, 8, 9]])

    >>> b=np.sin(a)

    >>> b

    array([[ 0.84147098, 0.90929743, 0.14112001],

          [-0.7568025 , -0.95892427, -0.2794155 ],

          [ 0.6569866 , 0.98935825, 0.41211849]])

    >>> c=np.sqrt(a)

    >>> c

    array([[ 1.       , 1.41421356, 1.73205081],

          [ 2.       , 2.23606798, 2.44948974],

          [ 2.64575131, 2.82842712, 3.       ]])

    >>> d=np.log(a)

    >>> d

    array([[ 0.       , 0.69314718, 1.09861229],

          [ 1.38629436, 1.60943791, 1.79175947],

          [ 1.94591015, 2.07944154, 2.19722458]])

    8.聚合函数

    对一数组进行聚合函数的套用,返回一个单一值作为结果

    >>> a

    array([[1, 2, 3],

          [4, 5, 6],

          [7, 8, 9]])

    >>> a.sum()

    45

    >>> a.max()

    9

    >>> a.min()

    1

    >>> a.mean()

    5.0

    >>> a.std()

    2.5819888974716112

    20180125

    1.一维度数组索引

    >>> a=np.array([1,2,3,4,5])

    >>> a[2]

    3

    >>> a[1:4]

    array([2, 3, 4])

    >>> a[-1]

    5

    2.方括号中传入多个索引值,可以同时选择多个元素

    >>> a[[2,1,3]]

    array([3, 2, 4])

    3.多维数组索引

    >>> a=np.arange(0,9).reshape(3,3)

    >>> a

    array([[0, 1, 2],

          [3, 4, 5],

          [6, 7, 8]])

    >>> a[1,2]

    5

    4.切片操作:是抽取数组的一部分元素生成新数组

    1)一维数组切片

    >>> a=np.arange(10,16)

    >>> a

    array([10, 11, 12, 13, 14, 15])

    >>> a[1:5]

    array([11, 12, 13, 14])

    >>> a[1:5:2]

    array([11, 13])

    >>> a[::2]

    array([10, 12, 14])

    >>> a[:5:2]

    array([10, 12, 14])

    >>> a[:5:]

    array([10, 11, 12, 13, 14])

    2)二维数组切片:需要指定行和列

    >>> a=np.arange(10,19).reshape(3,3)

    >>> a

    array([[10, 11, 12],

          [13, 14, 15],

          [16, 17, 18]])

    >>> a[0,:]                #逗号前面是行,逗号后面是列

    array([10, 11, 12])

    >>> a[:,0]

    array([10, 13, 16])

    >>> a[1,0:1]

    array([13])

    3)抽取一个小一点的矩阵

    >>> a

    array([[10, 11, 12],

          [13, 14, 15],

          [16, 17, 18]])

    >>> a[0:2,0:2]

    array([[10, 11],

          [13, 14]])

    4)如果要抽取的行或者列索引不连续,可以把这几个索引放到数组中

          [13, 14]])

    >>> a

    array([[10, 11, 12],

          [13, 14, 15],

          [16, 17, 18]])

    >>> a[[1,2],0:2]

    array([[13, 14],

          [16, 17]])

    5.二维数组迭代

    1)输出每一行

    >>> a

    array([[10, 11, 12],

          [13, 14, 15],

          [16, 17, 18]])

    >>> for row in a:

    ...    print(row)

    ...

    [10 11 12]

    [13 14 15]

    [16 17 18]

    2)输出每一个元素

    >>> a

    array([[10, 11, 12],

          [13, 14, 15],

          [16, 17, 18]])

    >>> for item in a.flat:

    ...    print(item)

    ...

    10

    11

    12

    13

    14

    15

    16

    17

    18

    6.对二维数组的行或者列进行聚合函数或者自定义函数的处理

    利用np.apply_along_axis(function,axis=x,arr=y)

    其中function是聚合函数或者自定义函数名

    axis是轴的标识,=0代表列,=1代表行

    arr是矩阵的表示

    如np.apply_along_axis(np.mean,axis=0,arr=a)代表,对a矩阵的每一列都套用np.mean函数

    1)对a数组的每一列求均值

    2)对a数组的每一行求最大值

    >>> a

    array([[10, 11, 12],

          [13, 14, 15],

          [16, 17, 18]])

    >>> b=np.apply_along_axis(np.mean,axis=0,arr=a)

    >>> b

    array([ 13., 14., 15.])

    >>> c=np.apply_along_axis(np.max,axis=1,arr=a)

    >>> c

    array([12, 15, 18])

    3)自定义一个函数,可以对参数进行2分之1的处理

    4)利用自定义函数处理a矩阵的每一列的每一个元素

    5)利用自定义函数处理a矩阵的每一行的每一个元素

    >>> a

    array([[10, 11, 12],

          [13, 14, 15],

          [16, 17, 18]])

    >>> def foo(x):

    ...    return x/2

    ...

    >>> b=np.apply_along_axis(foo,axis=0,arr=a)

    >>> b

    array([[ 5. , 5.5, 6. ],

          [ 6.5, 7. , 7.5],

          [ 8. , 8.5, 9. ]])

    >>> c=np.apply_along_axis(foo,axis=1,arr=a)

    >>> c

    array([[ 5. , 5.5, 6. ],

          [ 6.5, 7. , 7.5],

          [ 8. , 8.5, 9. ]])

    相关文章

      网友评论

        本文标题:Python数据分析笔记-03

        本文链接:https://www.haomeiwen.com/subject/urybaxtx.html