实验二:掌握Numpy基本操作

【实验内容】

伴随着我们步入机器学习的大门的脚步声,第一关的Boss出现在我们面前,它给我们带来了一堆杂乱的数据,我们需要对其进行处理,完成下文实验内容,尽快进入下一关!

1、下载安装jupyter notebook。

2、安装Numpy科学计算库。

3、掌握Numpy中的数组创建、切片索引、广播机制、基本运算、函数使用。

【实验目的】

1、掌握jupyter notebook的基本使用。

2、掌握numpy相关知识。

【实验步骤】

步骤1:安装jupyter notebook。

步骤2:安装numpy。

步骤3:使用numpy创建数组。

步骤4:掌握numpy切片操作。

步骤5:掌握numpy广播机制。

步骤6:掌握numpy常用函数。

步骤1:安装jupyter notebook。

注意1:请直接按默认路径创建项目,后续所需数据已经配置完成。

注意2:本系统已经装配好后续实验所需环境,您可以直接使用,请大展身手吧!

#在终端输入。
pip install notebook

#如果速度较慢可以挂载镜像源,如下:
pip install notebook -i http://pypi.mirrors.ustc.edu.cn/simple/ 

#测试使用jupyter notebook ,直接在终端输入,空格隔开。
Jupyter noteook

进入jupyter notebook后我们可以创建一个ipynb文件,如下图:

 

人工智能之Python数据分析——实验二、掌握Numpy基本操作

步骤2:安装numpy。

#方法一,直接在终端输入。
pip install numpy

#方法二,在jupyter notebook中输入。
!pip install numpy

准备工作已经做完下面就可以写代码了!

步骤3:使用numpy创建数组。

 

#导入numpy,通常我们把它重命名为np使用。
import numpy as np
 
#创建一维数组。
np.array([1,2,3])

输出:array([1, 2, 3])

#创建一个3*3的数组,并定义其数据类型为float32。
a = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9],
],dtype=np.float32)
a

输出:array([[1., 2., 3.],

[4., 5., 6.],

[7., 8., 9.], dtype=float32])

 

#查看创建的数组的维度、形状、尺寸、类型。
print('数组a的维度为:',a.ndim)   
print('数组a的形状为:',a.shape)  
print('数组a的尺寸为:',a.size)   
print('数组a的类型为:',a.dtype)

输出: 数组a的维度为: 2

数组a的形状为: (1, 3)

数组a的尺寸为: 3

数组a的类型为: float32

 

 

#创建全0和全1数组,其中shape可以指定其形状(行,列)。
np.zeros(shape=(2,4))

输出:array([[0., 0., 0., 0.],

[0., 0., 0., 0.]])

np.ones(shape=(4,2))

输出:array([[1., 1.],

[1., 1.],

[1., 1.],

[1., 1.]])

 

 

#创建连续值的数组,前者表示[1,9),后者表示在前者的基础上隔2个数取一位。
np.arange(1,9)

输出:array([1, 2, 3, 4, 5, 6, 7, 8, 9])

np.arange(1,9,2)

输出:array([1, 3, 5, 7])

 

 

#创建随机数。
np.random.rand(2,2)

输出:array([[0.6590129 , 0.68697198],
[0.1630133 , 0.59577548]])

 

np.random.randint(-100,100,size=(2,2))

输出:array([[ 50, -100],

[ 83, 47]])

 

步骤4:掌握numpy切片操作。

 

#切片是以索引来拆分,在列表中索引都是以0开始计算,倘若冒号左右没有值则代表到边界位。
a = np.arange(1,11)
print('a为:        ', a)
print('a[-3:]为:     ', a[-3:])    #取出最后3位
print('a[2:6]为:   ', a[2:6])

输出:a为:        [ 1  2  3  4  5  6  7  8  9 10]

a[-3:]为:     [ 8  9 10]

a[2:6]为:   [3 4 5 6]

 

 

#隔一定的步长取值。
print(a[:2])
print(a[::2])   #每隔2个数开始取值。

输出:[1 2]

[1 3 5 7 9]

 

 

#多维数组中的切片操作。
a = np.array([
    [1,2,3,4],
    [5,6,7,8],
    [9,0,1,2],
])
a

输出:array([[1, 2, 3, 4],

[5, 6, 7, 8],

[9, 0, 1, 2]])

a[:,:-1]   #取出前3列数据。

输出:array([[1, 2, 3],

[5, 6, 7],

[9, 0, 1]])

a[1,1]    #取出位于(1,1)位置的数。

输出:6

步骤5:掌握numpy广播机制。

广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长。

 

#同纬度的a和b相加。
a = np.array([[ 0, 0, 0],
           [10,10,10],
           [20,20,20],
           [30,30,30]])
b = np.array([[0,1,2],
              [0,1,2],
              [0,1,2],
              [0,1,2]])
print(a + b)

输出:[[ 0  1  2]

[10 11 12]

[20 21 22]

[30 31 32]]

 

 

#不同维度的a和b相加。
a = np.array([[ 0, 0, 0],
           [10,10,10],
           [20,20,20],
           [30,30,30]])
b = np.array([0,1,2])
print(a + b)

输出:[[ 0  1  2]

[10 11 12]

[20 21 22]

[30 31 32]]

其计算过程如下:

人工智能之Python数据分析——实验二、掌握Numpy基本操作

步骤6:掌握numpy常用函数。

 

#大小写转换函数。
print(np.char.title('wei zhong'))    #字符串的第一个单词大写。
print(np.char.lower('WEI ZHONG'))    #每个元素都转换为小写。
print(np.char.upper('wei zhong'))     #每个元素都转换为大写。

输出:Wei Zhong

wei zhong

WEI ZHONG

 

#正弦、余弦、正切运算(sin()、cos()、tan())。
a = np.array([0,30,45,60,90])
print ('各角度的正弦值:', np.sin(a*np.pi/180))    #np.pi/180  是转化为弧度。
print ('各角度的余弦值:', np.cos(a*np.pi/180))
print ('各角度的正切值:', np.tan(a*np.pi/180))

输出:各角度的正弦值: [0.         0.5        0.70710678 0.8660254  1.        ]

各角度的余弦值: [1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01

6.12323400e-17]

各角度的正切值: [0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00

1.63312394e+16]

 

#数组间的加减乘除。
a = np.arange(4).reshape(2,2)  #定义一个3*3的数组  。
print ('第一个数组:n', a)
b = np.array([1, 2])  
print ('第二个数组:n', b)
print ('两个数组相加:n', np.add(a,b))
print ('两个数组相减:n', np.subtract(a,b))
print ('两个数组相乘:n', np.multiply(a,b))
print ('两个数组相除:n', np.divide(a,b))

输出:第一个数组:

[[0 1]

[2 3]]

第二个数组:

[1 2]

两个数组相加:

[[1 3]

[3 5]]

两个数组相减:

[[-1 -1]

[ 1  1]]

两个数组相乘:

[[0 2]

[2 6]]

两个数组相除:

[[0.  0.5]

[2.  1.5]]

 

 

#计算数组的均值、最大值、最小值、标准差。
a = np.arange(9).reshape(3,3)
print(a)
print('数组的均值为',a.mean())
print('数组的最大值为', a.max())
print('数组的最小值为', a.min())
print('数组的标准差为', a.std())

输出:

[[0 1 2]

[3 4 5]

[6 7 8]]

数组的均值为 4.0

数组的最大值为 8

数组的最小值为 0

数组的标准差为 2.581988897471611

恭喜你已完成本章实验内容!!!

相关新闻

联系我们

027-87870986

在线咨询:点击这里给我发消息

邮件:931234110@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息