美文网首页我爱编程
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