栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

科学计算库NumPy

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

科学计算库NumPy

目录

学习目标;

一、认识和创建数组

定义:

ndarray对象属性

 数组创建

array()函数

zerosz()和ones()函数

empty()函数

arange()函数

二、ndarray对象的数据类型

ndarray.dtype

常用数据类型

 特征码

astype()方法

三、运算,索引,切片

运算

索引,切片

花式索引

布尔型索引

四、通用函数、数据处理

常见的一元通用函数

常见的二元通用函数

 数据处理

where()函数

 sort()方法:元素进行排序

all()函数

unique()函数

in1d()函数

有关集合的函数

 五、模块

1、线性代数

numpy.linalg模块

dot()方法(用于矩阵乘法)

2、随机数(random模块)

rand()函数

 seed( )函数



学习目标;
    创建数组,数组运算,索引与切片利用数组进行数据处理数据类型,线性代数模块,随机数模块转置和轴对称,通用函数

一、认识和创建数组

定义:
    NumPy中最重要的一个特点就是其N维数组对象,该对象可以执行一些科学计算。

ndarray对象属性
属性具体说明
ndarray.ndim维度个数,数组的个数
ndarray.shape数组维度。是一个整数的元组,表示每个维度上数组的大小
ndarray.size数组元素的总个数,等于shape属性中元组元素的乘积
ndarray.dtype描述数组中ing元素类型的对象,可以使用标准的Python来创建,野了使用NumPy特有的数据类型指定
ndarray.itemsize数组中平每个元素的字节大小

 数组创建

array()函数
    一维数组 data1 = np.array([1, 2, 3]) 二维数组 data2 = np.array([[1, 2, 3], [4, 5, 6]])

zerosz()和ones()函数
    zeros()函数创建元素值都是0的数组:np.zeros((3, 4))通过ones()函数创建元素值都为1的数组:np.ones((3, 4))

empty()函数

        定义:创建一个新的数组,该数组只分配了内存空间,它里面填充的元素都是随机的

np.empty((5, 2))

arange()函数
    定义:创建一个等差数组,arange()函数返回的结果是数组,不是列表
np.arange(1, 20, 5)

        注:有些数组元素的后面会跟着一个小数点,而有些元素后面没有,比如1和1.,产生这种现象,主要是因为元素的数据类型不同所导致的。

二、ndarray对象的数据类型

ndarray.dtype

        定义:创建一个表示数据类型的对象,如果希望获取数据类型的名称,则需要访问name属性进行获取。

data_one = np.array([[1, 2, 3], [4, 5, 6]])
data_one.dtype.name

常用数据类型

 特征码
特征码含义
b

布尔型

u无符号整型
c复数类型
S,a字节字符串
V原始数据
i有符号整形
f浮点型
OPython对象
Uunicode 字符串

astype()方法

定义:ndarray对象的数据类型可以通过astype()方法进行转换。

data = np.array([[1, 2, 3], [4, 5, 6]]) 
data.dtype
# 数据类型转换为float64
float_data = data.astype(np.float64)
float_data.dtype

三、运算,索引,切片

运算
    矢量化运算:形状相同的数组广播机制:形状不同的数组数组与标量运算:标量

        标量运算会产生一个与数组具有相同行和列的新矩阵,其原始矩阵的每个元素都被相加、相减、相乘或者相除。

索引,切片
arr = np.arange(8)
# 获取索引为5的元素
arr[5]
# arr[5]


# 获取索引为3~5的元素,但不包括5
arr[3:5]
# array([3, 4])

二维数组:

arr2d = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]]) 
# 获取索引为1的元素
arr2d[1]
# array([4, 5, 6])

二维数组的单个元素

# 获取位于第0行第1列的元素
arr2d[0, 1]
# 2

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

# 使用一个切片
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]])

花式索引

定义:用整数数组或列表进行索引,然后再将数组或列表中的每个元素作为下标进行取值。

#创建一个二维数组

demo_arr = np.empty((4, 4))

for i in range(4):

      demo_arr[i] = np.arange(i, i + 4)

# 获取索引为[0,2]的元素

demo_arr[[0, 2]]

# 获取索引为(1,1)和(3,2)的元素

demo_arr[[1, 3], [1, 2]]

布尔型索引

定义:将一个布尔数组作为数组索引,返回的数据是布尔数组中True对应位置的值。

array([False, False, True, False])

四、通用函数、数据处理

常见的一元通用函数

常见的二元通用函数

 数据处理

where()函数
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)
# array([1, 6, 7])

数组的统计汇总

 sort()方法:元素进行排序
arr = np.array([[6, 2, 7], 
                [3, 6, 2], 
                [4, 3, 2]])
arr.sort()

# array([[2, 6, 7],
#        [2, 3, 6],
#        [2, 3, 4]])


# 对任何一个轴上的元素进行排序
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()函数

定义:判断整个数组中的元素的值是否全部满足条件。

arr = np.array([[1, -2, -7],[-3, 6, 2], [-4, 3, 2]])

# arr的所有元素是否都大于0

np.all(arr > 0)

any()函数

定义:用于判断整个数组中的元素至少有一个满足条件

unique()函数

定义:找出数组中的唯一值,并返回排序后的结果

in1d()函数

判断数组中的元素是否在另一个数组中存在,该函数返回的是一个布尔型的数组。

arr = np.array([12, 11, 34, 23, 12, 8, 11])

np.in1d(arr, [11, 12])

 # array([ True,  True, False, False, True, False,  True])

有关集合的函数

 五、模块

1、线性代数

numpy.linalg模块

矩阵分解运算:

通过“*”对两个数组相乘的话,得到的是一个元素级的积,而不是一个矩阵点积。

dot()方法(用于矩阵乘法)

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

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

# 等价于np.dot(arr_x, arr_y)

arr_x.dot(arr_y)

# array([[22, 28], [49, 64]])

2、随机数(random模块)

rand()函数

定义:随机生成N维浮点数组。

# 随机生成一个二维数组

np.random.rand(3, 3)

生成服从多种概率分布随机数的其它函数:

 seed( )函数

定义:可以保证生成的随机数具有可预测性,也就是说产生的随机数相同

numpy.random.seed(seed=None)

#seed参数,用于指定随机数生成时所用算法开始的整数值

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753899.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号