5 科学计算

1实验步骤

1.1使用NumPy库创建数组

新建一个文件c5_ex1.py并输入以下代码,探索NumPy中创建数组的方法,并总结。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#导入NumPy

import numpy as np

#创建一个整数数组[1, 4, 2, 5, 3]

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

print(arr_1)

#创建一个长度为10的数组,数组数值都为0

arr_2 = np.zeros(10, dtype=int)

print(arr_2)

#创建一个3*5的浮点型数组,数组的值都是1

arr_3 = np.ones((3, 5), dtype=float)

print(arr_3)

#创建一个3*5的浮点型数组,数组的值都是3.14

arr_4 = np.full((3, 5), 3.14)

print(arr_4)

#创建一个数组,从0开始到20结束,步长为2

arr_5 = np.arange(0, 20, 2)

print(arr_5)

#创建一个5个元素的数组,这5个数均匀地分配到0~1之间

arr_6 = np.linspace(0, 1, 5)

print(arr_6)

#创建一个3*3的数组,数组元素的值在0-1之间随机分布

arr_7 = np.random.random((3, 3))

print(arr_7)

#创建一个3*3的整型数组,数组元素的值在区间[0, 10)随机分布

arr_8 = np.random.randint(0, 10, (3, 3))

print(arr_8)

注意,以上例子中,特别需要掌握如何建立一个元素值随机的数组!

1.2 NumPy创建多维数组

请输入如下代码,分别生成一个一维数组,二维数组和三维数组。

27

28

29

30

31

32

33

34

35

36

37

38

#创建一维数组

x1 = np.random.randint(10, size=6)

print("打印一维数组:")

print(x1)

#创建二维数组

x2 = np.random.randint(10, size=(3, 4))

print("打印二维数组:")

print(x2)

#创建三维数组

x3 = np.random.randint(10, size=(3, 4, 5))

print("打印三维数组:")

print(x3)

1.3 NumPy数组的属性

一个数组中,通常具有以下属性:数组的维度,每个维度的大小,数组的数据类型,每个元素的大小等等。请新建一个名为c5_ex2的文件,输入以下代码,探索数组属性的具体意义。

1

2

3

4

5

6

7

8

import numpy as np

#创建一个三维数组

arr_1 = np.random.randint(10, size=(3, 4, 5))

#探索属性

print("arr_1ndim属性:", arr_1.ndim)

print("arr_1shape属性:", arr_1.shape)

print("arr_1size属性:", arr_1.size)

print("arr_1dtype属性: ", arr_1.dtype)

请将探索结果写入下表

属性

意义

ndarray.ndim

 

ndarray.shape

 

ndarray.size

 

ndarray.dtype

 

1.4 数组的索引

数组的索引规则与列表类似,在一维数组中,可以使用中括号指定索引。在多维数组中,可以用逗号分隔。根据文件c5_ex1.py的数组x1,x2中元素位置,来填写下列表格。

下面的多维数组的例子,请填写下列空白:

数组位置

数组x1的第3个元素

 

数组x2的第1行第2列的元素

 

1.5 探索NumPy数组的通用函数

NumPy中还有一些通用函数用于科学计算,如下表所示。请搜索资料并填写各个函数的作用下表:

通用函数

作用

np.add

 

np.multiply

 

np.power

 

np.mod

 

np.absolute

 

np.sin

 

np.exp

 

np.log

 

此外在NumPy中,也有专用的用于统计的函数。例如求一个数组中的最大值等等。请在Python解释器中输入以下代码:

In [1]: import numpy as np

In [2]: big_array = np.random.rand(1000000)

In [3]: %timeit sum(big_array)

In [4]: %timeit np.sum(big_array)

对比第3和4两个语句的执行时间,并记录观察到的结果。基于观察结果,试解释NumPy中为什么使用通用函数,而不是直接使用运算符的原因?

2练习题

2.1 NumPy中,reshape()函数的作用是重塑数组的形状,例如代码A = np.arange(25).reshape(5,5)会生成一个5*5的矩阵,如下所示:

[[ 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]]

请编写代码,使矩阵中的第一行与第二行交换位置

(未完待续,引入random包和蒙特卡洛方法计算\Pi,考虑加入最小二乘法Python实现)

猜你喜欢

转载自blog.csdn.net/Liverpool_05/article/details/83245770
今日推荐