科学计算库Numpy

目录

学习目标

1.掌握 创建数组,索引与切片

2.掌握 利用数组进行数据处理

3.掌握 通用函数

4.熟悉 随机数模块

一、创建numpy数组

二、ndarray的索引和切片

三、numpy通用函数

四、 利用NumPy数组进行数据处理

五、随机数模块


学习目标

1.掌握 创建数组,索引与切片

2.掌握 利用数组进行数据处理

3.掌握 通用函数

4.熟悉 随机数模块


一、创建numpy数组

1.使用array()函数创建数组

# 创建一个一维数组 data1 = np.array([1, 2, 3])

# 创建一个二维数组 data2 = np.array([[1, 2, 3], [4, 5, 6]])

2.使用zero()函数创建元素值全为0的数组,ones()函数创建元素值都为1的数组

# 创建元素值全是0的数组 np.zeros((3, 4))

# 创建元素值全是1的数组 np.ones((3, 4))

3. empty()函数创建一个新的数组,该数组只分配了内存空间,它里面填充的元素都是随机的

# 创建元素值全是随机数的数组 np.empty((5, 2))

4. arange()函数可以创建一个等差数组,它的功能类似于range(),只不过arange()函数返回的结果是数组,而不是列表

 np.arange(1, 20, 5)

二、ndarray的索引和切片

一维数组的索引与python列表的功能相差不大

arr = np.arange(8)

# 获取索引为5的元素

arr[5]

# 获取索引为3~5的元素,但不包括5

arr[3:5]

 二维数组索引方式

科学计算库Numpy_第1张图片

 在二维数组中,每个索引位置上的元素不再是一个标量了,而是一个一维数组。

arr2d = np.array([[1, 2, 3],

                             [4, 5, 6],

                             [7, 8, 9]])

# 获取索引为1的元素

arr2d[1]

 如果想获取二维数组的单个元素,则需要通过形如“arr[x,y]”的索引来实现,其中x表示行号,y表示列号

# 获取位于第0行第1列的元素

arr2d[0, 1]

多维数组的切片是沿着行或列的方向选取元素的,我们可以传入一个切片,也可以传入多个切片,还可以将切片与整数索引混合使用

 一个切片示例:

arr2d[:2]

取出结果:array([[1, 2, 3],

                            [4, 5, 6]])

两个切片示例:

arr2d[0:2, 0:2]

取出结果:array([[1, 2],

                            [4, 5]])

切片与整数索引混合使用的示例:

arr2d[1, :2]

取出结果:array([[1, 2],

                            [4, 5]])

三、numpy通用函数

通用函数(ufunc)是一种针对ndarray中的数据执行元素级运算的函数,函数返回的是一个新的数组

常见的一元通用函数如下表:

科学计算库Numpy_第2张图片

 科学计算库Numpy_第3张图片

 常见的二元通用函数如下表:

 科学计算库Numpy_第4张图片

四、 利用NumPy数组进行数据处理

NumPy的where()函数是三元表达式x if condition else y的矢量化版本

arr_x = np.array([1, 5, 7])

arr_y = np.array([2, 6, 8])

arr_con = np.array([True, False, True])

result = np.where(arr_con, arr_x, arr_y)

result结果为:array([1, 6, 7])

 通过NumPy库中的相关方法,我们可以很方便地运用Python进行数组的统计汇总

科学计算库Numpy_第5张图片

 sort()可对数组中的元素进行排序

arr = np.array([[6, 2, 7],

                         [3, 6, 2],

                         [4, 3, 2]])

# 沿着编号为0的轴对元素排序 arr.sort(0)

结果为:

array([[3, 2, 2],

            [4, 3, 2],

            [6, 6, 7]])

all()函数用于判断整个数组中的元素的值是否全部满足条件,如果满足条件返回True,否则返回False

arr = np.array([[1, -2, -7],

                         [-3, 6, 2],

                         [-4, 3, 2]])

# arr的所有元素是否都大于0 np.all(arr > 0)

此时返回结果为  False

 any()函数用于判断整个数组中的元素至少有一个满足条件就返回True,否则就返回False

arr = np.array([[1, -2, -7],

                         [-3, 6, 2],

                         [-4, 3, 2]])

# arr的所有元素是否有一个大于0 np.any(arr > 0)

此时返回结果为  True

五、随机数模块

与Python的random模块相比,NumPy的random模块功能更多,它增加了一些可以高效生成多种概率分布的样本值的函数

# 随机生成一个二维数组

np.random.rand(3, 3)

 random模块中还包括了可以生成服从多种概率分布随机数的其它函数

科学计算库Numpy_第6张图片

 seed( )函数可以保证生成的随机数具有可预测性,也就是说产生的随机数相同

numpy.random.seed(seed=None)

函数中只有一个seed参数,用于指定随机数生成时所用算法开始的整数值

 当调用seed()函数时,如果传递给seed参数的值相同,则每次生成的随机数都是一样的。 当传递的参数值不同或者不传递参数时,则seed()函数的作用跟rand()函数相同,即多次生成随机数且每次生成的随机数都不同

你可能感兴趣的:(python)