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数据类型表

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

3.2数据类型标识码

字符 对应类型
b 代表布尔型
i 带符号整型
u 无符号整型
f 浮点型
c 复数浮点型
m 时间间隔(timedelta)
M datatime(日期时间)
O Python对象
S,a 字节串(S)与字符串(a)
U Unicode
V 原始数据(void)
以下是 NumPy 中常见的数据类型标识码及其对应的详细列表:
整数类型
数据类型 标识码 描述
int8 i1 8 位有符号整数
int16 i2 16 位有符号整数
int32 i4 32 位有符号整数
int64 i8 64 位有符号整数
uint8 u1 8 位无符号整数
uint16 u2 16 位无符号整数
uint32 u4 32 位无符号整数
uint64 u8 64 位无符号整数

浮点数类型

数据类型 标识码 描述
float16 f2 16 位浮点数(半精度)
float32 f4 32 位浮点数(单精度)
float64 f8 64 位浮点数(双精度)

复数类型

数据类型 标识码 描述
complex64 c8 64 位复数(单精度)
complex128 c16 128 位复数(双精度)

布尔类型

数据类型 标识码 描述
bool b1 布尔类型

字符串类型

数据类型 标识码 描述
bytes S10 长度为 10 的字节串
str U10 长度为 10 的 Unicode 字符串

Python 对象类型

数据类型 标识码 描述
O O Python 对象类型

四,数组属性

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

你可能感兴趣的:(python,numpy,开发语言)