numpy库的基础应用

numpy库的基础应用_第1张图片

1.Numpy的介绍

NumPy是一个开源的Python科学计算库,能够直接对数组和矩阵进行操作,可以省略很多循环语句,众多的数学函数也会让编写代码的工作轻松许多。

numpy库的基础应用_第2张图片

 2.Numpy的安装及导入

    在python中,我们安装需要用的库主要有三种途径,下面以numpy库的安装介绍给大家。

   (1)在终端输入:pip install numpy

   (2) 第二种:conda install numpy

   (3)第三种:就是在python中,选择文件,点击设置,然后按照以下图片进行操作,也可以安装所需的库。

numpy库的基础应用_第3张图片

(清华源:https://pypi.tuna.tsinghua.edu.cn/simple)这是一个快速的安装库的源,下载完这个清华源后再安装库可以加快我们安装库的速度。建议可以使用一下。

【1】Numpy的导入:import  numpy  as  np

3.Ndarray对象

    Ndarray: N维数组。它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。用于存放同类型元素的多维数组。

numpy库的基础应用_第4张图片     numpy库的基础应用_第5张图片numpy库的基础应用_第6张图片

 Ndarray数组对象:

array()函数:numpy库的基础应用_第7张图片 empty()函数:numpy库的基础应用_第8张图片

zeros()函数:numpy库的基础应用_第9张图片

ones()函数:numpy库的基础应用_第10张图片 full()函数:numpy库的基础应用_第11张图片

 eye()函数:numpy库的基础应用_第12张图片

arange()函数:numpy库的基础应用_第13张图片 frombuffer()函数:numpy库的基础应用_第14张图片

 linspace()函数:numpy库的基础应用_第15张图片

 logspace()函数:numpy库的基础应用_第16张图片

random.rand()函数:

numpy库的基础应用_第17张图片

random.random()函数:numpy库的基础应用_第18张图片

 注意:不能传两个参数,只能创建一维数组。

random.randint()函数:numpy库的基础应用_第19张图片

random.randn()函数: 

 random.normal()函数:numpy库的基础应用_第20张图片

 4.Ndarray数组属性

numpy库的基础应用_第21张图片

import numpy as np
arr = np.array([[1,2],[4,5]])
print(arr)
print(arr.ndim)   #秩
print(arr.size)   #总个数
print(arr.shape)  #形状

运行结果展示:

numpy库的基础应用_第22张图片

 5.切片和索引

ndarray对象的内容可以通过索引或切片来访问和修改,与Python中list的切片操作一样。ndarray数组可以基于0- n的下标进行索引,切片对象可以通过内置的slice函数,并设置start, stop及step参数进行,从原数组中切割出一个新数组。

import numpy as np      #导入numpy库
arr = np.arange(10)     #创建一个范围为10的数组
print(arr)               #输出这个数组


print(arr[1])       #索引出下标为1的数

 输出结果:

numpy库的基础应用_第23张图片

 切片还可以包括省略号“...”,来使选择元组的长度与数组的维度相同:

numpy库的基础应用_第24张图片  numpy库的基础应用_第25张图片

 在这个例子里,我们不难发现,:在这里代表的是取全部,1:3意思是从下标1行取到下标3行,而1:代表从1列取到最后。在这里一定要注意逗号前指的是行,逗号后指的是列,通过索引下标我们来实现数组的切片。

6.广播及迭代

        广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。

 1.形状相同:

import numpy as np
a = np.array([1,2,3,4,5])
b = np.array([5,6,7,8,9])
c = a+b
print(c)

结果:    

numpy库的基础应用_第26张图片

 2.形状不同:numpy 将自动触发广播机制。

numpy库的基础应用_第27张图片

import numpy as np
a = np.array([[0,0,0],
              [10,10,10],
              [20,20,20],
              [30,30,30]])
b = np.array([0,1,2])
print(a+b)

 结果:numpy库的基础应用_第28张图片

import numpy as np
a = np.array([[0,0,0],
              [10,10,10],
              [20,20,20],
              [30,30,30]])
b = np.array([0,1,2])
bb = np.tile(b,(4,1))           #重复b的各个维度
print(a+bb)

 结果展示:

numpy库的基础应用_第29张图片

 经过对比结果发现,两种结果好像没什么不同,只是两种途径而已

          迭代器最基本的任务就是可以完成对数组元素的访问。

import numpy as np
a = np.arange(6).reshape(2,3)
print(a)
print('输出迭代:')
for x in np.nditer(a):
    print(x,end=',')

  numpy库的基础应用_第30张图片

第二种方式:

import numpy as np
a = np.arange(6).reshape(2,3)
for x in np.nditer(a.T):
    print(x,end=',')
print('\n')
for x in np.nditer(a.T.copy(order='C')):
    print(x,end=',')

 numpy库的基础应用_第31张图片

两种方式相差不大,只不过在第二种方式里进行了转至,在这里我们注意到,无论转至不转至输出结果都一样的,那是因为print(x,end=',')这句并没有指定输出结果是转至后的列表,所以,它的输出结果仍然是a,千万不要在这里迷糊哟!那么也就解释通C是代表行序优先了,它是对转至后做出的命令!!   控制遍历顺序:order='C'--行序优先      order='F'--列序优先。)

7.数组操作

1.修改数组形状:

(1)reshape()函数                 (2)numpy.ndarray.flat          (3)flatten()函数         (4)ravel()函数

import numpy as np
a = np.arange(9)
print(a)
b = a.reshape(3,3)
print(b)
for row in b:
    print(row)        #对数组中每个元素都进行处理,可以用flat属性,该属性是一个数组元素迭代器
print('迭代后的数组:')
for element in b.flat:
    print(element)
c = b.flatten()
print(c)
print(b.ravel())

 输出结果:numpy库的基础应用_第32张图片

2. 翻转数组

(1)transpose()函数:对换数组的维度          (2)ndarray.T:类似于transpose()函数

(3)rollaxis()函数向后滚动特定的轴到一个特定位置

(4)swapaxes()函数:交换数组的两个轴          

import numpy as np
a = np.arange(12).reshape(3,4)
print("原数组:")
print(a)
print("对换数组:")
print(np.transpose(a))

b = a.T
print("用T转换数组:")
print(b)

c = np.rollaxis(a,1)
print('用rollaxis对x轴转换数组:')
print(c)
d = np.rollaxis(a,0)
print('用rollaxis对y轴转换数组:')
print(d)

输出结果:

numpy库的基础应用_第33张图片

 swapaxes()函数:

import numpy as np
a = np.arange(24).reshape(2,3,4)
print(a)
print(a.shape)
print('转换后的数组:')
b = np.swapaxes(a,2,0)
print(b)
print(b.shape)

结果展示:

numpy库的基础应用_第34张图片

3.修改数组维度

broadcast()函数:用于模仿广播的对象。

numpy库的基础应用_第35张图片     numpy库的基础应用_第36张图片

 broadcast_to()函数:将数组广播到新形状。

numpy库的基础应用_第37张图片

numpy库的基础应用_第38张图片

 expand_dims()函数:扩展数组的形状。

numpy库的基础应用_第39张图片

 squeeze()函数:从给定数组的形状中删除一维的条目。

numpy库的基础应用_第40张图片

 4.连接分割数组

(1)concatenate()函数:用于沿指定轴连接相同形状的两个或多个数组。

(2)stack()函数:用于沿新轴连接数组序列。

 (3)hstack()函数:通过水平堆叠来生成数组。

(4)vstack()函数:通过垂直堆叠来生成数组。

分割:

(1)split()函数:函数沿特定的轴将数组分割为子数组。

(2)hsplit()函数:用于水平分割数组。

(3)vsplit()函数:用于垂直分割数组。

5.数组元素的添加与删除

添加:

(1)resize()函数:返回指定大小的新数组。

(2)append()函数:在数组的末尾添加值。

(3)insert()函数:在给定索引之前,沿给定轴在输入数组中插入值。

删除:

(1)delete()函数:返回从输入数组中删除指定子数组的新数组。

(2)unique()函数:去除数组中的重复元素。

本次内容就先到这里啦,下一章我们继续讲numpy中的函数!!!

 

你可能感兴趣的:(numpy,python,机器学习)