IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> NumPy~学习总结(读书笔记作业) -> 正文阅读

[人工智能]NumPy~学习总结(读书笔记作业)

作者:recommend-item-box type_blog clearfix

什么是 NumPy?

????????NumPy(Numerical Python 的缩写)是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。

????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????----NumPy官方中文文档

????????应用场景:NumPy 通常与 SciPy(Python科学计算库)和 Matplotlib(Python绘图库)等软件包组合使用,这种组合方式被用来广泛地代替 MatLab 的使用。

安装和导入NumPy

使用Python包管理器pip命令安装

# windows下安装(或安装Ancaonda)
pip install numpy
#这里的NumPy需要小写为numpy,后面导入的时候也是这样!!!

使用前请先导入Numpy包!

import numpy 
#  通常起个名字:np
import numpy as np

查看你自己的NumPy版本

import numpy as np
print(np.__version__)
# 1.导包
# 2.双下划线

NumPy Ndarray 对象

Numpy提供了两种基本对象:

- ndarray:多维数组,后简称数组

- ufunc:能够对多维数组(数组)进行处理的特殊函数

????????NumPy库的核心对象是n维数组对象ndarray,其中的所有函数都是对ndarray对象进行操作。(ndarray数组能对整块数据进行运算,而且其中存储的所有元素都是相同类型, 且每个元素在内存中都有相同存储大小的区域)ndarray能直接直接保存数据,而列表存储的是对象引用。

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

参数说明:

名称描述
object可以是数组或者嵌套的数列
dtype数组元素的数据类型,可选
copy对象是否需要复制,可选
order创建数组的样式,C为行方向,F为列方向,A为默认(任意方向)
subok默认返回一个与基类类型一致的数组
ndmin生成指定数组的最小维度

下面提供一些示例方便理解:

import numpy as np

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

# 多于一个维度  
a = np.array([[1,  2],  [3,  4]])  
print (a)  
# [[1  2] 
# [3  4]]

# 最小维度  
a = np.array([1, 2, 3, 4, 5], ndmin =  2)  
print (a)  # [[1 2 3 4 5]]

# dtype 参数  
a = np.array([1,  2,  3], dtype = complex)  
print (a)  # [1.+0.j 2.+0.j 3.+0.j]

数组的基本属性:

属性含义
ndarray.ndim数组的维度
ndarray.shape

数组的维度大小,返回一个元组。

对于n行m列的数组维度大小为(n,m)

ndarray.size数组中元素的总数等于行乘列
ndarray.dtype数组的元素类型(可指定元素类型)
ndarray.itemsize数组中每个元素的大小(以字节为单位)
ndarray.data生成指向数组首地址的一个memoryview对象

创建一个 ndarray 只需调用 NumPy 的 array 函数即可:

import numpy as np

a = np.array([0, 1, 2, 3, 4])
# [0 1 2 3 4]
"""
使用array函数时传递一个序列生成数组,若传递多层嵌套序列则创建一个多维数组
NumPy会为新创建的数组推断一个合适的数据类型并且该参数会保存在dtype中
"""
a.ndim  # 返回数组的维度结果为1
a.shape  # 返回数组维度的大小结果为(5,)
a.size  # 返回数组中元素总数结果为5
a.dtype  # 返回数组元素类型结果为int32
a.itemsize  # 返回数组元素的大小结果为4(字节)
a.data  # 返回指向首地址的指针

a = np.array((0, 1, 2, 3, 4))
# [0 1 2 3 4]
a = np.arange(5)
# [0 1 2 3 4]
a = np.linspace(0, 2*np.pi, 5)
# [ 0.          1.57079633  3.14159265  4.71238898  6.28318531] 以均匀步长生成数字序列

# 可以通过astype()方法转换为元素类型
arr = np.array([1, 2, 3; 4, 5, 6], dtype = np.float64)  # 指定元素类型为float64型
arr.astype(np.str_)  # 转换元素类型为Unicode
# 输出为array(['1.0', '2.0', '3.0', '4.0', '5.0', '6.0'], dtype='<U32')

reshape() 函数~数组变维

imoprt numpy as np

# reshape(x,y)函数第一个参数是想要转换成的行数第二个参数是想要转换成的列数

a = np.array([[1,2],[2,3],[3,4]])  # a是一个三行两列的数组
print(a)
b = a.reshape(2,3)  # 通过reshape函数变为了两行三列的数组
print(b)
#a
#[[1 2]
#[3 4]
#[5 6]]

#b
#[[1 2 3]
#[4 5 6]]

NumPy数据类型

????????NumPy 作为 Python 的扩展包,它提供了比 Python 更加丰富的数据类型。

NumPy数据类型

数据类型表

名称描述
bool_布尔型数据类型(True 或者 False)
int_默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc与 C 的 int 类型一样,一般是 int32 或 int 64
intp用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8字节(-128 to 127)
int16整数(-32768 to 32767)
int32整数(-2147483648 to 2147483647)
int64整数(-9223372036854775808 to 9223372036854775807)
uint8无符号整数(0 to 255)
uint16无符号整数(0 to 65535)
uint32无符号整数(0 to 4294967295)
uint64无符号整数(0 to 18446744073709551615)
float_float64 类型的简写
float16半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_complex128 类型的简写,即 128 位复数
complex64复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128复数,表示双 64 位浮点数(实数部分和虚数部分)
str_表示字符串类型
string_表示字节串类型

数据类型对象(dtype)

????????数据类型对象又称为dtype对象,主要用来描述数组元素的数据类型、大小以及字节顺序。同时,它也可以用来创建结构化数据。比如常见的 int64、float32 都是 dtype 对象的实例。

- 数据的类型(整数,浮点数或者 Python 对象)

- 数据的大小(例如, 整数使用多少个字节存储)

- 数据的字节顺序(小端法或大端法)

- 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分

- 如果数据类型是子数组,那么它的形状和数据类型是什么。

????????字节顺序是通过对数据类型预先设定 < 或 >?来决定的。 <?意味着小端法(最小值存储在最小的地址,即低位组放在最前面)。>?意味着大端法(最重要的字节存储在最小的地址,即高位组放在最前面)。

dtype语法

numpy.dtype(object, align, copy)

- object - 要转换为的数据类型对象

- align - 如果为True,填充字段使其类似C的结构体

- copy - 复制dtype对象,如果为False,则是对内饰数据类型对象的引用

import numpy as np
# 使用标量类型
a1 = np.dtype(np.int32)
print(a1)  # int32

# int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
a2 = np.dtype('i4')
print(a2)  # int32

# 将数据类型应用于 ndarray 对象
a3 = np.dtype([('age',np.int8)]) 
a4 = np.array([(10,),(20,),(30,)], dtype = a3) 
print(a)  # [(10,) (20,) (30,)]

# 类型字段名可以用于存取实际的 age 列
a5 = np.dtype([('age',np.int8)]) 
a6 = np.array([(10,),(20,),(30,)], dtype = a5) 
print(a['age'])  # [10 20 30]

# 定义一个结构化数据类型 student,包含字符串字段 name,整数字段 age,及浮点字段 marks,并将这个 # dtype 应用到 ndarray 对象。
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student) 
print(a)  # [('abc', 21, 50.0), ('xyz', 18, 75.0)]


# 数组的 dtype 为 int8(一个字节)(ndarray.itemsize 以字节的形式返回数组中每一个元素的大小。)
x = np.array([1,2,3,4,5], dtype = np.int8)  
print (x.itemsize)  # 1
 
# 数组的 dtype 现在为 float64(八个字节) 
y = np.array([1,2,3,4,5], dtype = np.float64)  
print (y.itemsize)  # 8

数据类型标识码

NumPy中每种数据类型都有一个唯一标识的字符码,如下图所示:

标识码表

字符对应类型
b代表布尔型
i带符号整型
u无符号整型
f浮点型
c复数浮点型
m时间间隔(timedelta)
Mdatatime(日期时间)
OPython对象
S,a字节串(S)与字符串(a)
UUnicode
V原始数据(void)

创建ndarray数组

创建 ndarray 数组的方法

????????除了使用 array() 方法外,NumPy 还提供了其他创建 ndarray 数组的方法。

numpy.empty

numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:

numpy.empty(shape, dtype = float, order = 'C')
参数描述
shape数组形状
dtype数据类型,可选
order有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。
import numpy as np 
arr = np.empty((2.3), dtype = int, order = 'F') 
print(arr) 
"""
输出结果为:
[[1740919781 1699243488]
 [     12290          0]
 [         0          0]]
数组元素是内存随机给的值,因为未被初始化
"""

numpy.zeros

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

numpy.zeros(shape, dtype = float, order = 'C')
# 参数说明同上
import numpy as np
 
# 默认为浮点数
x = np.zeros(5) 
print(x)  # [0. 0. 0. 0. 0.]  (行)(中间有空格隔开)
 
# 设置类型为整数
y = np.zeros((5,), dtype = np.int) 
print(y)  # [0 0 0 0 0]  (行)(中间有空格隔开)
 
# 自定义类型
z = np.zeros((2,2), dtype = [('x', 'i4'), ('y', 'i4')])  
print(z)
"""
结果为:
[[(0, 0) (0, 0)]
 [(0, 0) (0, 0)]]
"""

numpy.ones

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

numpy.ones(shape, dtype = None, order = 'C')
import numpy as np
 
# 默认为浮点数
x = np.ones(5) 
print(x)  # [1. 1. 1. 1. 1.]

 
# 自定义类型
x = np.ones([2,2], dtype = int)
print(x)
"""
[[1 1]
 [1 1]]
"""

numpy.full

返回给定维度和类型的新数组,填充 fill_value。

numpy.full(shape, fill_value, dtype=None, order='C')
参数描述
shape返回数组为度
fill_value填充值
dtype返回数组的数据类型,默认值 None 指:np.array(fill_value).dtype
order有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。
import numpy as np
a = np.full((2, 3), 7)
print(a)
"""
[[7 7 7]
 [7 7 7]]
"""

NumPy 从已有的数组创建数组

numpy.asarray

????????numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个。

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

参考文献:

NumPy官方中文文档https://www.numpy.org.cn/https://www.numpy.org.cn/

菜鸟教程https://www.runoob.com/https://www.runoob.com/

c语言中文网http://c.biancheng.net/icon-default.png?t=LA92http://c.biancheng.net/

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:27:05  更:2021-12-04 13:27:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/20 18:48:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码