python数组求和_python数组计算的数学模块-NumPy

本文介绍了NumPy模块的基础用法,包括数组的概念、数组与列表的区别以及数组的创建。NumPy的数组支持高效数学运算,可存储多维数据,与列表相比在性能上有显著优势。创建数组可以通过`np.array()`函数,还可以使用`np.arange()`和`np.random`函数生成随机数组。此外,还展示了如何通过`reshape()`创建二维数组。
摘要由CSDN通过智能技术生成

NumPy模块的名称是由“Numerical Python”缩写而来,这个模块是一个运行速度非常快的数学模块,主要用于数组计算。下面一起来看看NumPy模块的基本用法。

1、数组的基础知识

NumPy模块的主要特点就是引入了数组的概念。因为一维数组和列表有相似之处,所以这里借助列表来讲解数组的基本概念。演示代码如下:

1 import numpy as np

2 a = [1, 2, 3, 4]

3 b = np.array([1, 2, 3, 4]) # 创建数组的一种方式,array就是数组的意思

4 print(a) #输出变量a的值

5 print(b) #输出变量b的值

6 print(type(a)) #输出变量a的数据类型

7 print(type(b)) #输出变量b的数据类型

第3行代码中的array()是NumPy模块中的函数,用于创建数组。运行结果如下:

1 [1, 2, 3, 4] # 列表的展现形式

2 [1 2 3 4] # 数组的展现形式

3 # 变量a的数据类型为列表

4 # 变量b的数据类型为数组

接着通过提取列表和数组中的元素来帮助大家进一步理解数组,演示代码如下:

1 [1, 2, 3, 4] # 列表的展现形式

2 [1 2 3 4] # 数组的展现形式

3 # 变量a的数据类型为列表

4 # 变量b的数据类型为数组

运行结果如下:

1 2 # 提取列表a的单个元素的结果2

2 # 提取数组b的单个元素的结果

3 [1, 2] # 列表a的切片结果,遵循“左闭右开”的规则

4 [1 2] # 数组b的切片结果,也遵循“左闭右开”的规则

从运行结果可以看出,列表和数组有着相似的元素索引机制,唯一的区别就是数组中的元素用空格分隔,而列表中的元素用逗号分隔。那么NumPy模块为什么不直接使用列表来组织数据,而要引入数组这一新的数据结构呢?原因有很多,这里主要讲两点。

第一,数组能很好地支持一些数学运算,而用列表来完成这些数学运算则较为麻烦。演示代码如下:

1 import numpy as np

2 a = [1, 2, 3, 4]

3 b = np.array([1, 2, 3, 4])

4 c = a * 2

5 d = b * 2

6 print(c)

7 print(d)

运行结果如下:

1 [1, 2, 3, 4, 1, 2, 3, 4]

2 [2 4 6 8]

可以看到,同样是做乘法运算,列表是把元素复制了一遍,而数组则是对每个元素都进行了乘法运算。

第二,数组可以存储多维数据,而列表通常只能存储一维数据。演示代码如下:

1 import numpy as np

2 e = [[1, 2], [3, 4], [5, 6]] # 大列表里嵌套小列表

3 f = np.array([[1, 2], [3, 4], [5, 6]]) # 创建二维数组的一种方式

4 print(e)

5 print(f)

运行结果如下:

1 [[1, 2], [3, 4], [5, 6]] # 列表e的打印输出结果

2 # 数组f的打印输出结果

3 [[1 2]

4 [3 4]

5 [5 6]]

可以看到,列表e虽然包含了3个小列表,但其结构是一维的。而数组f则是3行2列的二维结构,这也是之后要学习的pandas模块的核心概念之一,因为数据处理中经常用到二维数组,即二维的表格结构。

2、数组的创建

前面我们已经了解了创建数组的一种方式——np.array(列表)。这里简单总结一下,演示代码如下:

1 import numpy as np、

2 # 创建一维数组

3 a = np.array([1, 2, 3, 4])

4 # 创建二维数组

5 b = np.array([[1, 2], [3, 4], [5, 6]])

除此之外,还有一些常见的创建数组的方式。以一维数组为例,可以使用np.arange()函数来创建一维数组,该函数的括号里可以输入1~3个参数,会得到不同的效果。演示代码如下:

1 import numpy as np

2 # 1个参数:起点取默认值0,参数值为终点,步长取默认值1,左闭右开

3 x = np.arange(5)

4 # 2个参数:第1个参数为起点,第2个参数为终点,步长取默认值1,左闭右开

5 y = np.arange(5, 10)

6 # 3个参数:第1个参数为起点,第2个参数为终点,第3个参数为步长,左闭右开

7 z = np.arange(5, 10, 2)

8 print(x)

9 print(y)

10 print(z)

运行结果如下:

1 [0 1 2 3 4]

2 [5 6 7 8 9]

3 [5 7 9]

还可以用np.random中的函数创建随机一维数组。例如,用np.random.randn(3)创建一个一维数组,其中包含服从正态分布(均值为0、标准差为1的分布)的3个随机数。演示代码如下:

1 import numpy as np

2 c = np.random.randn(3)

3 print(c)

运行结果如下:

1 [-0.59243327 0.53587119 0.15330862]

至于二维数组,可以利用创建一维数组的np.arange()函数和reshape()函数来创建。例如,将包含0~11这12个整数的一维数组转换成3行4列的二维数组,演示代码如下:

1 import numpy as np

2 d = np.arange(12).reshape(3, 4)

3 print(d)

运行结果如下:

1 [[ 0 1 2 3]

2 [ 4 5 6 7]

3 [ 8 9 10 11]]

这里再简单介绍一种创建随机整数二维数组的方法,演示代码如下:

1 import numpy as np

2 e = np.random.randint(0, 10, (4, 4))

3 print(e)

第2行代码中的np.random.randint()函数用来创建随机整数,括号里第1个参数0为起始数,第2个参数10为终止数,第3个参数(4,4)则表示创建一个4行4列的二维数组。运行结果如下:

1 [[4 1 6 3]

2 [3 0 4 8]

3 [7 8 1 8]

4 [4 6 3 6]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值