NumPy简单入门教程

NumPy是Python中的一个运算速度非常快的一个数学库,是Python中的数据科学和机器学习。

数据基础

创建一个数组

Python 3.10.2 (tags/v3.10.2:a58ebcc, Jan 17 2022, 14:12:15) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> a=np.array([0,1,2,3,4])
>>> b=np.array((0,1,2,3,4))
>>> c=np.arange(5)
>>> d=np.linspace(0,2*np.pi,5)
>>> print(a)
[0 1 2 3 4]
>>> print(b)
[0 1 2 3 4]
>>> print(c)
[0 1 2 3 4]
>>> print(d)
[0.         1.57079633 3.14159265 4.71238898 6.28318531]
>>> print(a[3])
3
>>> a=np.array([[11,12,13,14,15],
...             [16,17,18,19,20],
...             [21,22,23,24,25],
...             [26,27,28,29,30],
...             [31,32,33,34,35]])
>>> print(a[2,4])
25
>>>

它背后的一些数学

矢量、矩阵(暂时没明白)

多组数组切片

>>> print(a[0,1:4])
[12 13 14]
>>> print(a[1:4,0])
[16 21 26]
>>> print(a[::2,::2])
[[11 13 15]
 [21 23 25]
 [31 33 35]]
>>> print(a[:,1])
[12 17 22 27 32]
>>>

数据属性 

>>> print(type(a))
<class 'numpy.ndarray'>
>>> print(a.dtype)
int32
>>> print(a.size)
25
>>> print(a.shape)
(5, 5)
>>> print(a.itemsize)
4
>>> print(a.ndim)
2
>>> print(a.nbytes)
100
>>>

itemsize:每个项占用的字节数。

ndim:数组的维数。

nbytes: 数组中的所有数据消耗掉的字节数。(这句子没看懂)

使用数组

基本操作符

>>> a=np.arange(25)
>>> a=a.reshape((5,5))
>>> b=np.array([10,62,1,14,2,56,79,2,1,45,
...             4,92,5,55,63,43,35,6,53,24,
...             56,3,56,44,78])
>>> b=b.reshape((5,5))
>>> print(a)
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]
>>> print(b)
[[10 62  1 14  2]
 [56 79  2  1 45]
 [ 4 92  5 55 63]
 [43 35  6 53 24]
 [56  3 56 44 78]]
>>> print(a+b)
[[ 10  63   3  17   6]
 [ 61  85   9   9  54]
 [ 14 103  17  68  77]
 [ 58  51  23  71  43]
 [ 76  24  78  67 102]]
>>> print(a-b)
[[-10 -61   1 -11   2]
 [-51 -73   5   7 -36]
 [  6 -81   7 -42 -49]
 [-28 -19  11 -35  -5]
 [-36  18 -34 -21 -54]]
>>> print(a*b)
[[   0   62    2   42    8]
 [ 280  474   14    8  405]
 [  40 1012   60  715  882]
 [ 645  560  102  954  456]
 [1120   63 1232 1012 1872]]
>>> print(a/b)
[[0.         0.01612903 2.         0.21428571 2.        ]
 [0.08928571 0.07594937 3.5        8.         0.2       ]
 [2.5        0.11956522 2.4        0.23636364 0.22222222]
 [0.34883721 0.45714286 2.83333333 0.33962264 0.79166667]
 [0.35714286 7.         0.39285714 0.52272727 0.30769231]]
>>> print(a**2)
[[  0   1   4   9  16]
 [ 25  36  49  64  81]
 [100 121 144 169 196]
 [225 256 289 324 361]
 [400 441 484 529 576]]
>>> print(a<b)
[[ True  True False  True False]
 [ True  True False False  True]
 [False  True False  True  True]
 [ True  True False  True  True]
 [ True False  True  True  True]]
>>> print(a>b)
[[False False  True False  True]
 [False False  True  True False]
 [ True False  True False False]
 [False False  True False False]
 [False  True False False False]]
>>> print(a.dot(b))
[[ 417  380  254  446  555]
 [1262 1735  604 1281 1615]
 [2107 3090  954 2116 2675]
 [2952 4445 1304 2951 3735]
 [3797 5800 1654 3786 4795]]
>>>

dot()函数计算两个数组的点积。(没看懂) 

它背后的一些数学知识

dot()函数称为点积。没看懂。

数组特殊运算符

>>> a=np.arange(10)
>>> print(a)
[0 1 2 3 4 5 6 7 8 9]
>>> print(a.sum())
45
>>> print(a.min())
0
>>> print(a.max())
9
>>> print(a.cumsum())
[ 0  1  3  6 10 15 21 28 36 45]
>>>

cumsum()函数:首先将第一个元素和第二个元素相加,并将计算结果存储在一个列表中,然后将该结果添加到第三个元素中,然后再将该结果存储在一个列表中。(暂时没看懂)

索引进阶

花式索引

花式索引是获取数组中我们想要的特定元素的有效方法。

>>> a=np.arange(0,100,10)
>>> indeces=[1,5,-1]
>>> b=a[indeces]
>>> print(a)
[ 0 10 20 30 40 50 60 70 80 90]
>>> print(b)
[10 50 90]
>>>

布尔屏蔽

>>> import matplotlib.pyplot as plt
>>> a=np.linspace(0,2*np.pi,50)
>>> b=np.sin(a)
>>> plt.plot(a,b)
[<matplotlib.lines.Line2D object at 0x00000275EE5D3DC0>]
>>> mask=b>=0
>>> plt.plot(a[mask],b[mask],'bo')
[<matplotlib.lines.Line2D object at 0x00000275EE610460>]
>>> mask=(b>=0)&(a<=np.pi/2)
>>> plt.plot(a[mask],b[mask],'go')
[<matplotlib.lines.Line2D object at 0x00000275EE610220>]
>>> plt.show()
>>>

 

缺省索引

>>> a=np.arange(0,100,10)
>>> b=a[:5]
>>> c=a[a>=50]
>>> print(a)
[ 0 10 20 30 40 50 60 70 80 90]
>>> print(b)
[ 0 10 20 30 40]
>>> print(c)
[50 60 70 80 90]
>>>

Where函数

Where()函数是另外一个根据条件返回数组中的值的有效方法。只需要把条件传递给它,它就会返回一个使得条件为真的元素的列表。(没看懂)

>>> a=np.arange(0,100,10)
>>> b=np.where(a<50)
>>> c=np.where(a>=50)[0]
>>> print(b)
(array([0, 1, 2, 3, 4], dtype=int64),)
>>> print(c)
[5 6 7 8 9]
>>> print(a)
[ 0 10 20 30 40 50 60 70 80 90]
>>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值