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

Numpy基础

首先,安装numpy在一个虚拟环境中:cmd打开终端

然后输入conda activate

再输入 conda activate "你的环境" 激活并进入虚拟环境,然后就可以在这里下第三方库了。

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

下载numpy。

一.Numpy基础

- Python 的第三方扩展包,主要用来计算、处理一维或多维数组

- 底层主要用 C语言编写,因此它能够高速地执行数值计算

- 提供了多种数据结构,这些数据结构能够非常契合的应用在数组和矩阵的运算上

- 数组算术计算方面,提供了大量的数学函数

1.1 与列表的区别

1. NumPy 数组是同质数据类型(homogeneous),Python 列表是异质数据类型(heterogeneous),即列表中的元素可以是不同的类型。

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

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

二.ndarray对象

        一个 n 维数组对象,是一个一系列相同类型元素组成的数组集合,每个元素都占有大小相同的内存。内存常用的布局方式有两种,即按行(C语言)或者按列(Fortran语言)。

2.1 ndarray对象创建

 NumPy 的内置函数 `array()` 可以创建 ndarray 对象。

# 先导入numpy
import numpy

# 用法
ndarray = numpy.array(object, dtype = None, copy = True, order = None,ndmin = 0)
print(type(ndarray))

<class 'numpy.ndarray'>

object

表示一个数组序列

dtype

可选参数,通过它可以更改数组的数据类型

copy

可选参数,表示数组能否被复制,默认是 True

order

以哪种内存布局创建数组,有 3 个可选值

分别是 C(行序列)/F(列序列)/A(默认)

ndmin

用于指定数组的维度

- object

# 先导入numpy
import numpy

# 创建两个数组
a = numpy.array((1, 2, 3))
b = numpy.array([1, 2, 3])
print(a)
print(b)

[1 2 3]
[1 2 3]

        可以看到数组与列表的差异还是明显的,其中元素以空格分割,而列表以逗号分割。且传进arrary函数的参数可以是任意可迭代对象。

- dtype

# 先导入numpy
import numpy

# 其可改变存在数组中元素的数据类型
a = numpy.array((1, 2, 3),dtype=str)
print(a)

['1' '2' '3']

- ndmin

# 先导入numpy
import numpy

# 创建一个二维数组
a = numpy.array((1, 2, 3),ndmin=2)

# 创建一个正常的二维数组
b = numpy.array(((4, 5, 6),(7,8,9)),ndmin=2)
print(a)

# 换个行
print()

print(b)

[[1 2 3]]

[[4 5 6]
 [7 8 9]]

尝试查看数组形状

# 先导入numpy
import numpy


b = numpy.array(((4, 5, 6),(7,8,9)),ndmin=2)
print(b)

# 来个换行
print()

# 看看几行几列,返回一个元组,如果是一维的只有一个数,第二个是空的,俩用逗号隔开
print(b.shape)

[[4 5 6]
 [7 8 9]]

(2, 3)

2.2 zeros()

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

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

shape

数组形状

dtype

数据类型,可选

order

'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组

# 示例
import numpy

a = numpy.zeros((4,4))
print(a)

[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

注意:这里的 '0.' 代表的是浮点数, '0.' 即 '0.0'

2.3 ones()

创建指定形状的数组,数组元素以 1 来填充,参数与zeros一致。

numpy.ones(shape, dtype = None, order = 'C')
# 示例
import numpy

x = numpy.ones((3,4))
print(x)

[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]

2.4 full()

full()用于创建一个填充指定值的数组。

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

shape

数组的形状(如 (2, 3) 表示 2 行 3 列的数组)

fill_value

填充的值

dtype

数组的数据类型(如 `np.float32`

order

数组的内存布局(如 `'C'` 表示 C 风格,`'F'` 表示 Fortran 风格)

# 示例
import numpy

a = numpy.full((3, 3), 7)

print(a)

[[7 7 7]
 [7 7 7]
 [7 7 7]]

可以看到这里传一个整数进去那数组内部默认就是整数了,而不是浮点数

2.5 arrange()

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

numpy.arange(start, stop, step, dtype)

start

起始值,默认为 0

stop

终止值(不包含)

step

步长,默认为 1

dtype

返回 ndarray 的数据类型,如果没有提供,

则会使用输入数据的类型

# 示例
import numpy

a = numpy.arange(0,10,2)
print(a)

[0 2 4 6 8]

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,表示根据输入参数自动推断数据类型。

# 示例
import numpy 

a = numpy.linspace(1, 10, 19,retstep=True)
print(a)

(array([ 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, 10. ]), 0.5)

注意,如果要以0.5为步长的话,应该取(stop-start)的2倍再加1,直接用差值2倍会少取一个

容易出问题的地方如下图:

import numpy 

a = numpy.linspace(1, 10, 20,retstep=True)
print(a)

(array([ 1.        ,  1.47368421,  1.94736842,  2.42105263,  2.89473684,
        3.36842105,  3.84210526,  4.31578947,  4.78947368,  5.26315789,
        5.73684211,  6.21052632,  6.68421053,  7.15789474,  7.63157895,
        8.10526316,  8.57894737,  9.05263158,  9.52631579, 10.        ]), 0.47368421052631576)

因此延伸出步长的计算:step = (stop - start) / (num - 1)

- 差了(stop - start)这么多数

- 分成(num - 1)

三.numpy数据类型

- NumPy 提供了比 Python 更加丰富的数据类型

- NumPy 中每种数据类型都有一个唯一标识的字符码,int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替

print(data.dtype)	#输出:[('name', 'S10'), ('age', '<i4')]

说明:

在编程中,字节序标记用于指定数据的字节顺序。常见的字节序标记包括:

: 小端序,数据的最低有效字节存储在内存的最低地址,而最高有效字节存储在内存的最高地址。

: 大端序,数据的最高有效字节存储在内存的最低地址,而最低有效字节存储在内存的最高地址。

四.简单数组属性

4.1 shape

通过赋值,可以用来调整数组形状

import numpy

a = numpy.array([1,2,3])
print(a.shape)

# 换个行
print()

# 更改维度
a.shape = (3,1)
print(a)

(3,)

[[1]
 [2]
 [3]]

4.2 数组维度 ndmin

ndim 是 NumPy 数组的一个属性,用于返回数组的维度数(即数组的秩)。

import numpy

a = numpy.array([1, 2, 3])
print(a.ndim)

1

相关文章:

  • LLM 加速技术有哪些
  • Linux--文件
  • “Failed to load steamui.dll” 文件丢失:原因分析与全面修复指南
  • UE5小石子阴影在非常近距离才显示的问题
  • 告别Win10强制更新:永久关闭系统更新指南
  • Node.js 下载安装及环境配置教程、卸载删除环境配置超详细步骤(附图文讲解!) 从零基础入门到精通,看完这一篇就够了
  • Day16 -实例:Web利用邮箱被动绕过CDN拿真实ip
  • 鸿蒙生态全解析:应用适配分享
  • 【Python · PyTorch】时域卷积网络 TCN
  • 【字符设备驱动开发–IMX6ULL】(一)简介
  • NLP高频面试题(十八)——什么是prefill和decoder分离架构
  • CAS(Compare And Swap)
  • 邮箱验证:避免无效邮件浪费营销资源
  • 【数据结构】_单链表_相关面试题(二)
  • Focal Loss
  • C++中ShellExecute函数使用方法说明,如果一开始参数为隐藏,后面还能再显示出来吗
  • liunx安装宝塔(可自定义网站)
  • FLEXlm如何通过web 管理
  • PyTorch量化技术教程:第五章 综合实战项目
  • FFmpeg学习:AVStream AVCodecParameters
  • 媒体:“重病老人银行取款身亡”涉事家属称已和解,银行将支付十万
  • 年在沪纳税350亿人民币,这些全球头部企业表示“对上海承诺不会变”
  • 李峰已任上海青浦区委常委
  • 美F-35险被胡塞武装击中,损失增大让行动成“烂尾仗”
  • 商务部回应美方加严限制中国芯片:敦促美方立即纠正错误做法
  • 问责!美国海军对“杜鲁门”号航母一系列事故展开调查