Python中文社区大数据,机器学习,人工智能python小课——零基础入门——学习笔记

python数据分析包02|NumPy-02

2020-07-31  本文已影响0人  pythonic生物人

本文图解numpy基础使用方法。
首发于本人公众号:pythonic生物人

更好的阅读体验请戳:

python数据分析包|NumPy-02

1、一维数组

创建数组

In [77]: import numpy as np
In [78]: np.array([1,2,3])
Out[78]: array([1, 2, 3])
image

numpy创建元素全为1、为0及随机数数组

In [79]: np.ones(3)
Out[79]: array([1., 1., 1.])

In [80]: np.zeros(3)
Out[80]: array([0., 0., 0.])

In [81]: np.random.random(3)
Out[81]: array([0.95802737, 0.47883203, 0.12742189])
image

数组相加

In [83]: data = np.array([1,2])
In [84]: ones = np.ones(2)

In [85]: data
Out[85]: array([1, 2])

In [86]: ones
Out[86]: array([1., 1.])
In [87]: data + ones
Out[87]: array([2., 3.])
image

数组相减、乘、除

In [88]: data - ones
Out[88]: array([0., 1.])

In [89]: data * ones
Out[89]: array([1., 2.])

In [90]: data / ones
Out[90]: array([1., 2.])
image

数组与常数的运算,即广播(broadcasting)

In [91]: data * 1.6#这种计算逻辑被称为广播(broadcasting)
Out[91]: array([1.6, 3.2])
image

数组索引

In [99]: data = np.array([1,2,3])
In [100]: data
Out[100]: array([1, 2, 3])

In [101]: data[0]
Out[101]: 1

In [102]: data[1]
Out[102]: 2


In [104]: data[0:2]
Out[104]: array([1, 2])

In [105]: data[1:]
Out[105]: array([2, 3])
image

数组简单统计计算(aggregation)

一些统计计算的函数 :

函数名称    描述
np.sum  计算元素的和
np.prod 计算元素的积
np.mean 计算元素的平均值
np.std  计算元素的标准差
np.var  计算元素的方差
np.min  找出最小值
np.max  找出最大值
np.argmin   找出最小值的索引
np.argmax   找出最大值的索引
np.median   计算元素的中位数
np.percentile np.nanpercentile 计算基于元素排序的统计值
np.any  验证任何一个元素是否为真
np.all  验证所有元素是否为真
In [106]: data.max()
Out[106]: 3

In [107]: data.min()
Out[107]: 1

In [108]: data.sum()
Out[108]: 6
image

2、二维数组

In [2]: import numpy as np
In [3]: np.array([[1,2],[3,4]])
Out[3]:
array([[1, 2],
       [3, 4]])
image

ones、zeros、random创建数组

In [4]: np.ones((3,2))#元素全为1的数组
Out[4]:
array([[1., 1.],
       [1., 1.],
       [1., 1.]])

In [5]: np.zeros((3,2))#元素全为0的数组
Out[5]:
array([[0., 0.],
       [0., 0.],
       [0., 0.]])

In [6]: np.random.random((3,2))#随机数数组
Out[6]:
array([[0.99160431, 0.94423442],
       [0.77457438, 0.442339  ],
       [0.18536075, 0.44602502]])
image

简单数组运算(+)

In [7]: data =  np.array([[1,2],[3,4]])
In [8]: ones = np.ones((2,2))
In [9]: data
Out[9]:
array([[1, 2],
       [3, 4]])

In [10]: ones
Out[10]:
array([[1., 1.],
       [1., 1.]])

In [11]: data + ones
Out[11]:
array([[2., 3.],
       [4., 5.]])
image

简单数组运算(广播(broadcast)的算法)

In [12]: ones_row = np.ones(2)
In [13]: data + ones_row#此处又使用到广播(broadcast)的算法
Out[13]:
array([[2., 3.],
       [4., 5.]])
image

矩阵运算(dot)

和线性代数里面一样,一个shape为(x,n)的数组与一个shape为(n,y)的数组相乘得一个shape为(x,y)的数组,此处可直观理解为第一个的数组的列数等于第二个的行数。

In [20]: data = np.array([1,2,3])
In [21]: power_of_ten = np.array([1,10,100,1000,10000,100000]).reshape(3,2)

In [22]: data
Out[22]: array([1, 2, 3])

In [23]: power_of_ten
Out[23]:
array([[     1,     10],
       [   100,   1000],
       [ 10000, 100000]])

In [24]: data.dot(power_of_ten)
Out[24]: array([ 30201, 302010])

In [25]: data.shape
Out[25]: (3,)#1行3列的数组

In [26]: power_of_ten.shape
Out[26]: (3, 2)#3行两列的数组

In [27]: data.dot(power_of_ten).shape
Out[27]: (2,)#相乘的一个1行2列的数组
image

二维数组索引

In [32]: data = np.arange(1,7).reshape((3,2))
In [33]: data
Out[33]:
array([[1, 2],
       [3, 4],
       [5, 6]])
n [34]: data[0,1]
Out[34]: 2

In [35]: data[1:3]
Out[35]:
array([[3, 4],
       [5, 6]])

In [36]: data[0:2,0]#[0:2,0]可以理解逗号前为行的范围,逗号后为列的范围
Out[36]: array([1, 3])
image

二维数组像一维数组一样的统计运算

In [38]: data.max()
Out[38]: 6

In [39]: data.min()
Out[39]: 1

In [40]: data.sum()
Out[40]: 21
image

二维数组沿着某个轴统计运算(传入axis参数)

In [43]: data = np.array([[1,2],[5,3],[4,6]])
In [44]: data
Out[44]:
array([[1, 2],
       [5, 3],
       [4, 6]])

In [46]: data.max()
Out[46]: 6

In [47]: data.min()
Out[47]: 1

In [48]: data.sum()
Out[48]: 21

In [49]: data.max(axis=0)#求每一列(0轴)的最大值
Out[49]: array([5, 6])

In [50]: data.max(axis=1)#求每一行(1轴)的最大值
Out[50]: array([2, 5, 6])
image
In [51]: data = np.arange(1,7).reshape(3,2)
In [52]: data
Out[52]:
array([[1, 2],
       [3, 4],
       [5, 6]])

In [53]: data.T
Out[53]:
array([[1, 3, 5],
       [2, 4, 6]])
image

二维数组变形(reshape)

In [54]: data = np.arange(1,7)
In [55]: data
Out[55]: array([1, 2, 3, 4, 5, 6])
In [56]: data.reshape(2,3)
Out[56]:
array([[1, 2, 3],
       [4, 5, 6]])

In [57]: data.reshape(3,2)
Out[57]:
array([[1, 2],
       [3, 4],
       [5, 6]])
image

3、三维数组

创建三维数组

In [65]: np.ones((4,3,2))#下图能形象的显示意义
Out[65]:
array([[[1., 1.],
        [1., 1.],
        [1., 1.]],

       [[1., 1.],
        [1., 1.],
        [1., 1.]],

       [[1., 1.],
        [1., 1.],
        [1., 1.]],

       [[1., 1.],
        [1., 1.],
        [1., 1.]]])
image
In [66]: np.arange(1,9).reshape(2,2,2)#下图更形象
Out[66]:
array([[[1, 2],
        [3, 4]],

       [[5, 6],
        [7, 8]]])
image

参考资料

https://jalammar.github.io/visual-numpy/
Python数据科学手册
B站up: https://www.bilibili.com/video/BV134411p7gU


更好的阅读体验请戳:

python数据分析包|NumPy-02


欢迎关注公众号:pythonic生物人

干货,真香
上一篇 下一篇

猜你喜欢

热点阅读