机器学习(二)--NumPy

本篇文章介绍了一些Numpy的基础操作。

NumPy 是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

📙参考:NumPy 数据类型 | 菜鸟教程 (runoob.com)

1.Numpy ndarray对象

Numpy最重要的一个特点是其N维数组对象ndarray,它是一系列同类型数据的集合

下标以0开始进行集合中元素的索引。

ndarray对象是用于存放同类型元素的多维数组。

ndarray 中的每个元素在内存中都有相同存储大小的区域。

ndarray内容:

  • 一个指向数据的指针

  • 数据类型或dtype,描述在数组中的固定大小值的格子

  • 一个表示数组形状的元组(shape),表示各个维度大小的元组

  • 一个跨度元组(stride)

1.1 创建对象

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

参数说明:

名称

描述

object

数组或嵌套的数列

dtype

数组元素的数据类型,可选

copy

标识对象是否需要复制,可选

order

创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)

subok

为逻辑值,默认返回一个与基类类型一致的数组

ndmin

指定生成数组的最小维度

🙌举个例子:

1.2 ndarray对象常见的属性

属性

说明

ndarray.ndim

秩,即轴的数量或维度的数量

ndarray.shape

数组的维度,即矩阵n行m列

ndarray.size

数组元素的总个数,相当于上行的n*m

ndarray.dtype

ndarray对象的元素类型

🙌举个例子:

(1)ndarray.ndim

(2)ndarray.shape

(3)ndarray.size

(4)ndarray.dtype

1.3 数据类型对象(dtype)

数据类型对象(numpy.dtype 类的实例)用来描述与数组对应的内存区域是如何使用。

!!!最大的一点是,结构化数据类型的使用。

结构化数据类型,类型字段和对应的实际类型将被创建。

1.3.1 应用一

(1)首先创建结构化数据类型

(2)应用实例

(3)取值

类型字段名可以用于存取实际的age列的值。

💡总代码:

1.3.2 应用二

定义一个结构化数据类型 student,包含字符串字段 name,整数字段 age,及浮点字段 marks,并将这个 dtype 应用到 ndarray 对象。

⏰总结:

可以先将dtype定义成一个结构化数据,然后再定义array,定义结构化数据的很多个数据的集合。相当于student=np.dtype()封装成一个类,然后a定义成student的集合。

2. NumPy数组形态操作

NumPy处理的最基础数据类型是由同种元素构成的多维数组,简称数组。

数组中所有元素的类型必须是相同的,元素可以用整数索引,初始下标为0。

ndarry的对象属性见1.2,此部分主要介绍对它的形态操作方法。

方法

说明

ndarray.shape(n,m)

不改变数组,返回一个维度为(n,m)的数组

ndarray.resize(new_shape)

直接修改数组

ndarray.swapaxes(ax1,ax2)

将这两个维度进行调换

ndarray.flatten()

对数组进行降维,返回一个折叠后的数组

ndarray.ravel()

同flatten,返回一个视图

🙌举个例子

3. 创建数组

详情可以参考NumPy 从已有的数组创建数组 | 菜鸟教程 (runoob.com)

方法

说明

numpy.empty()

创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组

numpy.zeros()

创建指定大小的数组,数组元素以 0 来填充

numpy.ones()

创建指定形状的数组,数组元素以1来填充

🙌举个例子

1.numpy.empty

numpy.empty(shape, dtype = float, order = 'C')

2.numpy.zeros

numpy.zeros(shape, dtype = float, order = 'C')

3.numpy.ones

numpy.ones(shape, dtype = None, order = 'C')

4.NumPy索引

1.索引可以类似list的切片索引。

2.整数数组索引

我们索引出的是数组中(0,0),(1,1)和(2,0)处的元素。

⏰通过观察可以发现,前边是行,后边是列。

🙌举个例子

取4x3数组中的四个角的元素

取(0,0),(0,2)(3,0)(3,2)的

行索引是[0,0]、[3,3] :第0 行、第0行、第3行、第3行

列索引是[0,2] [0,2]:第0列、第2列、第0列、第2列

5.NumPy计算

操作

说明

det(ndarray)

计算矩阵列式

eig(ndarray)

计算方阵的特征值和特征向量

inv(ndarray)

计算方阵的逆

pinv(ndarray)

计算矩阵的伪逆

qr(ndarray)

计算qr分解

svd(ndarray)

计算奇异值分解svd

solve(ndarray)

解线性方程组Ax=b,其中A为方阵

lstsq(ndarray)

计算Axb的最小二乘解

5.1 张量操作

1.矩阵相加

2.标量与矩阵相乘

3.点乘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三三木木七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值