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

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 创建的副本,并且需要将更改写回原始数组。

相关文章:

  • SQLAlchemy 支持特殊字符
  • 16. 最接近的三数之和
  • 如何让DeepSeek-R1在内网稳定运行并实现随时随地远程在线调用
  • AIGC-头条号长文项目创作智能体完整指令(DeepSeek,豆包,千问,Kimi,GPT)
  • 安装教程:windows上安装oracle详细教程
  • Python 3.13 正式支持 iOS:移动开发的新篇章
  • Ludic:用Python构建HTML,告别JavaScript的繁琐开发
  • 在Linux系统中将html保存为PNG图片
  • 将 char [] str = “hello,you,world” 改为 “world,you,hello“,要求空间复杂度为1
  • 硬链接和软链接
  • uvm factory
  • SvelteKit 最新中文文档教程(13)—— Hooks
  • spring security的过滤器链
  • 基于redis实现会话保持
  • react native 0.72.5集成react-navigation
  • 使用idea开发spark程序
  • 2025年数智化电商产业带发展研究报告260+份汇总解读|附PDF下载
  • uWebSockets开发入门
  • ai-api-union项目,适配各AI厂商api
  • win32汇编环境,网络编程入门之十四
  • 奎屯网站制作/网站之家查询
  • 四川网站建设seo/常见的网站推广方式有哪些
  • 教育企业重庆网站建设/google关键词分析工具
  • 专业网站设计公司价格/重庆今天刚刚发生的重大新闻
  • 网站里的搜索怎么做/广州网络推广外包平台
  • 阿里云的网站建设好不好/百度中心人工电话号码