写在前面
本来想直接入坑 matplotlib 的,但是因为看了看网友们说的基本都是入门 pandas 和 numpy 开始,还是循序渐进吧,急不得急不得…
正餐开始
本部分采用的编译环境是 jupyter notebook ,之前虽然有简单使用过(还能回想起当时初入门都花了好长时间)不管怎么说,现在再和着视频学习吧~老师和同学们都要寻求转型呢
之前一直忽略了 Edit 这个部分(也无怪,之前都是自己一个人摸索呜呜呜 ),甚至删掉 Cell 都是用小剪刀(那可真是黑历史了(擦汗) )
选中绿色部分是对代码进行编译,选中蓝色部分即可对 Cell 进行操作(比如按两下DD即可删除,按一下C对 Cell 内容进行复制等操作)
若要快速运行代码:
shift+enter 键同时按 即可快速运行该 Cell 内代码并将光标定位到下一行
ctrl+enter 键同时按 即可快速运行该 Cell 内代码,光标不进行移动
对比 pycharm 里面的 Ctrl+Shift+f10
标题、Markdown、Cell 的区别
Numpy
产生数组
import numpy as np
一般不推荐使用 import numpy* 因为部分函数可能有冲突,害怕报错
接下来的操作都是默认导入了 numpy 包的
从列表产生数组
l = [1,2,3,4,5]
a = np.array(l)
a
从列表传入
np.array([1,2,3,4,5])
生成全为0的数组
np.zeros(5)
生成全为1的数组
np.ones(5)
注意:上述出来的结果均默认为浮点数,若想将其转化为整数类型,则需:
np.ones(5,dtype = "int")
可以使用 fill 方法将数组设定为指定值
a = np.array([1,2,3,4,5])
a.fill(5)
a
即可利用 fill() 方法将内容进行替换。但是如果是小数的话,会依据 a 的默认值,所得结果依然为整数:
想要正确进行 fill() 操作需要先对格式进行定义:
a = a.astype("float")
a.fill(2.5)
a
且一定记得要用个参数对 a.astype() 的内容进行接收
- 与列表不同,数组中要求所有元素的 dtype 是一样的,如果传入参数的类型与数组类型不一样,需要按照已有的类型进行转换。
还可以使用一些特定的方法生成特殊的数组
生成整数序列:
a = np.arange(1,10)
a
左闭右开的一个区间,所以生成的答案为 1—9
同时可以设置步长:
a = np.arange(1,10,2)
a
采用 arange() 方法,左闭右开的一个区间,所以生成的答案为 1,3,5,7,9
生成等差数列:
a = np.linspace(1,20,20)
a
采用 linspace() 方法,生成一个左右闭合的区间,里面生成20个数字
a = np.linspace(1,20,41)
a
生成随机数
- 生成随机数
a = np.random.rand(10)
a
array([0.08325194, 0.87338858, 0.35452514, 0.01557608, 0.24605199,0.88970188, 0.31528014, 0.99042108, 0.54581469, 0.52036265])
- 生成随机整数
需要规定前后及生成个数
a = np.random.randint(1,10,10)
a
array([2, 3, 8, 3, 7, 3, 3, 8, 7, 4])
- 生成二项分布随机数
a = np.random.randn(10)
a
array([ 0.64359913, 0.34418811, -1.02005962, 1.0522183 , -0.57950052, -0.08133944, 0.07244462, 0.66275307, 0.08665061, 0.52686807])
数组属性
查看类型:
如果是查看数组的类型(当然这个没啥好看的,数组的类型就是数组类型…)
a = np.array([1,2,3,4,5])
type(a)
numpy.ndarray
查看数组中的数据类型∶
我们主要想查看的是 array 里面的内容是什么,采用的是 dtype() 方式
a.dtype
dtype(‘int32’)
查看形状,会返回一个元组,每个元素代表这一维的元素数目∶
a.shape
(5,)
查看数组里面元素的数目∶
a.size
5
查看数组的维度:
a.ndim
1 | 备注:维度的英文为 Dimensionality
索引与切片
索引第一个元素
a = np.array([1,2,3,4,5])
a[0]
修改第一个元素的值
a[0] = 10
切片,支持负索引:
a[1:3]
a[1:-2] #等价于上式
a[-4:3] #等价于上式
省略参数
a[::2] #从开头取到结尾,间隔为2
a[2:] #从2取到结尾
a[:-1] #从开头取到倒数第二个元素
numy现实作用:假设我们记录一部电影的累计票房,可以这样计算每天的票房:
ob = np.array([12000,123123,234344,423233,453325])
ob2 = ob[1:]-ob[:-1]
ob2
多维数组及其属性
array还可以用来生成多维数组
a = np.array([[1,2,3,4],[5,6,7,8]])
查看形状
a.shape
(2, 4) 代表是一个2行4列的数组
查看总的元素个数
a.size
查看维数
a.ndim
多维数组索引
对于二维数组,可以传入两个数字来索引:
a = array([[1, 2, 3, 4] , [5, 6, 7, 8]])
a[1,3]
8
其中,1是行索引,3是列索引,中间用逗号隔开,事实上,Python会将它们看成一个元组(1,3),然后按照顺序进行对应。
可以利用索引给它赋值:
a[1,3] = -3
a = array([[ 1, 2, 3, 4] , [ 5, 6, 7, -3]])
事实上,我们还可以使用单个索引来索引一整行内容:
a[1]
array([ 5, 6, 7, -3])
Python会将这单个元组当成对第一维的索引,然后返回对应的内容。
a[:,2]
array([3, 7])
多维数组切片
多维数组,也支持切片操作,想得到第一行的第4和第5两个元素:
a[0,3:5]
得到最后两行的最后两列:
a[4:,4:]
得到第三列:
a[:,2]
每一维都支持切片的规则,包括负索引,省略:
例如,取出3,5行的奇数列
a[2::2,::2]