当前位置: 首页 > article >正文

python三大库之--numpy(一)

python三大库之–numpy(一)

文章目录

  • python三大库之--numpy(一)
  • 一、numpy基础
    • 1.1概念
    • 优点
    • 1.3 与python列表区别
  • 二、使用步骤
    • 1.引入库
    • 2.创建对象
      • 2.1.zeros()
      • 2.2.ones()
      • 2.3full()
      • 2.5arange()
      • 2.6 linspace
  • 三,数据类型
    • 3.1数据类型表
    • 3.2数据类型标识码
  • 四,数组属性
    • 4.1 shape
    • 4.2数组维度
    • 4.3 flags


一、numpy基础

1.1概念

  • numpy是python的第三方扩展包,主要用于计算,处理一维数据或多维数据
  • NumPy 提供了大量的数学函数
  • NumPy 的底层主要用 C语言编写,因此它能够高速地执行数值计算
  • NumPy 还提供了多种数据结构,这些数据结构能够非常契合的应用在数组和矩阵的运算上

优点

NumPy 可以很便捷高效地处理大量数据,使用 NumPy 做数据处理的优点如下:

  • NumPy 是 Python 科学计算基础库
  • NumPy 可以对数组进行高效的数学运算
  • NumPy 的 ndarray 对象可以用来构建多维数组
  • NumPy 能够执行傅立叶变换与重塑多维数组形状
  • NumPy 提供了线性代数,以及随机数生成的内置函数

1.3 与python列表区别

  • NumPy 数组是同质数据类型(homogeneous),即数组中的所有元素必须是相同的数据类型。数据类型在创建数组时指定,并且数组中的所有元素都必须是该类型。

  • Python 列表是异质数据类型(heterogeneous),即列表中的元素可以是不同的数据类型。列表可以包含整数、浮点数、字符串、对象等各种类型的数据。

  • NumPy 数组提供了丰富的数学函数和操作,如矩阵运算、线性代数、傅里叶变换等。

  • Python 列表提供了基本的列表操作,如添加、删除、切片、排序等。

二、使用步骤

1.引入库

在这里可以使用清华源

pip install numpy==1.26.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/

2.创建对象

通过 NumPy 的内置函数 array() 可以创建 ndarray 对象,其语法格式如下:

numpy.array(object, dtype = None, copy = True, order = None,ndmin = 0)
  • object:表示一个数组序列
  • dtype:参数,通过它可以更改数组的数据类型
  • copy:可选参数,表示数组能否被复制,默认是 True
  • order:以哪种内存布局创建数组,有 3 个可选值,分别是 C(行序列)/F(列序列)/A(默认)
  • ndmin:用于指定数组的维度
import numpy as np

a=np.array([1,2,3,4,5])
print(a)
b=np.array([[1,2,3],[4,5,6]])
print(b)
[1 2 3 4 5]
[[1 2 3]
 [4 5 6]]

2.1.zeros()

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

numpy.zeros(shape, dtype = float, order = 'C')
a=np.zeros((2,3),dtype=int,order='F')
print(a)
[[0 0 0]
 [0 0 0]]

2.2.ones()

  • shape:数组的形状(如 (2, 3) 表示 2 行 3 列的数组)
  • fill_value:填充的值
  • dtype:数组的数据类型(如 np.float32
  • order:数组的内存布局(如 'C' 表示 C 风格,'F' 表示 Fortran 风格)
numpy.ones(shape, dtype = None, order = 'C')
a= np.ones((2,3),dtype=int,order='F')
print(a)
[[1 1 1]
 [1 1 1]]

2.3full()

a=np.full((2,3),5,dtype=int,order='F')
print(a)
[[5 5 5]
 [5 5 5]]

2.5arange()

arange() 函数用于创建一个等差数列的数组。它类似于 Python 内置的 range() 函数,但返回的是一个 NumPy 数组而不是一个列表。

numpy.arange(start, stop, step, dtype)
参数描述
start起始值,默认为 0
stop终止值(不包含)
step步长,默认为 1
dtype返回 ndarray 的数据类型,如果没有提供,则会使用输入数据的类型
a=np.arange(1,10,2)
print(a)

a=np.arange(1,10,0.5)
print(a)
[1 3 5 7 9]
[1.  1.5 2.  2.5 3.  3.5 4.  4.5 5.  5.5 6.  6.5 7.  7.5 8.  8.5 9.  9.5]

2.6 linspace

在指定的数值区间内,返回均匀间隔的一维等差数组,默认均分 50 份

  • 格式
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数描述
start起始值,默认为 0
stop终止值(默认包含)
num表示数值区间内要生成多少个均匀的样本,默认值为 50
endpoint默认为 True,表示数列包含 stop 终止值,反之不包含
retstep表示是否返回步长。如果为 True,则返回一个包含数组和步长的元组;如果为 False,则只返回数组。默认为 False。
dtype返回 ndarray 的数据类型,默认为 None,表示根据输入参数自动推断数据类型。
#step=stop-start/(num-1)
a,step=np.linspace(1,10,5,retstep=True)
print(a)
[ 1.    3.25  5.5   7.75 10.  ]
[ 1.    3.25  5.5   7.75 10.  ]

三,数据类型

3.1数据类型表

序号数据类型语言描述
1bool_布尔型数据类型(True 或者 False)
2int_默认整数类型,类似于 C 语言中的 long,取值为 int32 或 int64
3intc和 C 语言的 int 类型一样,一般是 int32 或 int 64
4intp用于索引的整数类型(类似于 C 的 ssize_t,通常为 int32 或 int64)
5int8代表与1字节相同的8位整数。值的范围是-128到127
6int16代表 2 字节(16位)的整数。范围是-32768至32767
7int32代表 4 字节(32位)整数。范围是-2147483648至2147483647
8int64表示 8 字节(64位)整数。范围是-9223372036854775808至9223372036854775807
9uint81字节(8位)无符号整数
10uint162 字节(16位)无符号整数
11uint324 字节(32位)无符号整数
12uint648 字节(64位)无符号整数
13float_float64 类型的简写
14float16半精度浮点数,包括:1 个符号位,5 个指数位,10个尾数位
15float32单精度浮点数,包括:1 个符号位,8 个指数位,23个尾数位
16float64双精度浮点数,包括:1 个符号位,11 个指数位,52个尾数位
17complex_复数类型,与 complex128 类型相同
18complex64表示实部和虚部共享 32 位的复数
19complex128表示实部和虚部共享 64 位的复数
20str_表示字符串类型,等价于unicode_
21bytes_表示字节串类型,基于字节
22string_表示字节串类型,等价于bytes_,基于字节,NumPy 2.0以后版本被移除,使用bytes_代替
23unicode_表示字节串类型,基于字符,NumPy 2.0以后版本被移除,使用str_`代替

3.2数据类型标识码

字符对应类型
b代表布尔型
i带符号整型
u无符号整型
f浮点型
c复数浮点型
m时间间隔(timedelta)
Mdatatime(日期时间)
OPython对象
S,a字节串(S)与字符串(a)
UUnicode
V原始数据(void)
以下是 NumPy 中常见的数据类型标识码及其对应的详细列表:
整数类型
数据类型标识码描述
int8i18 位有符号整数
int16i216 位有符号整数
int32i432 位有符号整数
int64i864 位有符号整数
uint8u18 位无符号整数
uint16u216 位无符号整数
uint32u432 位无符号整数
uint64u864 位无符号整数

浮点数类型

数据类型标识码描述
float16f216 位浮点数(半精度)
float32f432 位浮点数(单精度)
float64f864 位浮点数(双精度)

复数类型

数据类型标识码描述
complex64c864 位复数(单精度)
complex128c16128 位复数(双精度)

布尔类型

数据类型标识码描述
boolb1布尔类型

字符串类型

数据类型标识码描述
bytesS10长度为 10 的字节串
strU10长度为 10 的 Unicode 字符串

Python 对象类型

数据类型标识码描述
OOPython 对象类型

四,数组属性

4.1 shape

  • 返回一个元组,元组中的每个元素表示数组在对应维度上的大小。元组的长度等于数组的维度数。
def shape_test():
    array_one = np.array([[1,2,3],[4,5,6]])
    print('array_one 原数组维度:',array_one.shape)
    print('array_one 原数组内容:',array_one)
    array_one.shape = (3,2)
    print('array_one 转变数组维度大小之后的数组维度:',array_one.shape)
    print('array_one 转变数组维度大小之后的数组内容:',array_one)

shape_test()
array_one 原数组维度: (2, 3)
array_one 原数组内容: [[1 2 3]
 [4 5 6]]
array_one 转变数组维度大小之后的数组维度: (3, 2)
array_one 转变数组维度大小之后的数组内容: [[1 2]
 [3 4]
 [5 6]]

如果使用shape属性修改数组的形状,则修改的是原数组的形状,reshape修改数组的形状会返回一个新数组,不修改原数组的形状。

4.2数组维度

ndim 是 NumPy 数组的一个属性,用于返回数组的维度数(即数组的秩)。它表示数组有多少个维度。

def ndmin_test():
    array_one = np.array([1,2,3],ndmin=2)
    print('array_one 原数组维度:',array_one.ndim)
    print('array_one 原数组内容:',array_one)
    print('array_one 转变数组维度大小之后的数组维度:',array_one.ndim)
    print()
ndmin_test()

array_one 原数组维度: 2
array_one 原数组内容: [[1 2 3]]
array_one 转变数组维度大小之后的数组维度: 2

4.3 flags

flags 属性功能:

返回 ndarray 数组的内存信息

'''
    flags 属性功能:
        1、返回 ndarray 数组的内存信息
'''
def flags_test():
    array_one = np.array([[1,2,3],[4,5,6]])
    print('array_one 数数组的内存信息:\n',array_one.flags)
flags_test()
array_one 数数组的内存信息:
   C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False

说明

C_CONTIGUOUS:
表示数组在内存中是 C 风格连续的(行优先)。
如果为 True,则数组是 C 风格连续的。

F_CONTIGUOUS:
表示数组在内存中是 Fortran 风格连续的(列优先)。
如果为 True,则数组是 Fortran 风格连续的。

OWNDATA:
表示数组是否拥有自己的数据(即是否是视图)。
如果为 True,则数组拥有自己的数据;如果为 False,则数组可能是从另一个数组或对象借用数据的。

WRITEABLE:
表示数组是否可写。
如果为 True,则数组是可写的;如果为 False,则数组是只读的。

ALIGNED:
表示数组是否对齐。
如果为 True,则数组的数据在内存中是对齐的。

WRITEBACKIFCOPY:
表示数组是否是通过 np.copy 创建的副本,并且需要将更改写回原始数组。
如果为 True,则数组是通过 np.copy 创建的副本,并且需要将更改写回原始数组。

UPDATEIFCOPY:
表示数组是否是通过 np.copy 创建的副本,并且需要将更改写回原始数组。
如果为 True,则数组是通过 np.copy 创建的副本,并且需要将更改写回原始数组。

http://www.kler.cn/a/613316.html

相关文章:

  • 【已解决】Git:为什么 .gitignore 不生效?如何停止跟踪已提交文件并阻止推送?
  • 如何快速看懂并修改神经网络
  • MySQL数据库和表的操作
  • 【开源宝藏】用 JavaScript 手写一个丝滑的打字机动画效果
  • Netty——零拷贝
  • Java 大视界 -- 基于 Java 的大数据隐私计算在医疗影像数据共享中的实践探索(158)
  • 批量将多个 XPS 文档转换为 PDF 格式
  • 洛谷题单1-B2005 字符三角形-python-流程图重构
  • 安全性测试(Security Testing)
  • Manus AI 与多语言手写识别技术解析
  • 科技与人文的交融——当代科技对文化、艺术与社会伦理的深度影响
  • 提示词工程 — 科研论文笔记
  • 计算机视觉算法实战——半监督学习:技术与应用全景
  • 菜鸡前端计算机强基计划之CS50 第七课 python 入门—— Python 中文件操作专题学习
  • 配置基于接口的二层协议透明传输
  • Skynet 中 snlua 服务 init 细节
  • NX二次开发刻字功能——布尔运算
  • Matlab进阶绘图第73期-双组堆叠图
  • Python入门学习笔记 - 从环境搭建到基础语法
  • uni-app:自定义键盘