Numpy基础01

news2024/10/22 9:27:25

目录

1.array创建对象

1.1定义一维数组

1.2定义二维数组

2.Numpy的数据类型

3.数据类型标识码

4.array的API

4.1astype()

4.2max()

4.3min()

4.4sum()

4.5reshape()

4.6random.rand()

5.数组属性

5.1ndim

5.2shape

5.3itemsize

5.4flags

6.创建数组方法

6.1arrage()

6.2empty()

6.3zeros()

6.4ones()

6.5arange()

6.6linspace()

7.切片

7.1slice(start,stop,step)

7.2[start:stop:step]

8.高级索引

8.1整数数组索引

8.2bool索引

9.广播

9.1一维数组与标量相加


1.array创建对象

numpy.array(object, dtype = None, copy = True, order = None,ndmin = 0)

参数说明:

序号参数描述说明
1object表示一个数组序列
2dtype可选参数,通过它可以更改数组的数据类型
3copy可选参数,表示数组能否被复制,默认是 True
4order以哪种内存布局创建数组,有 3 个可选值,分别是 C(行序列)/F(列序列)/A(默认)
5ndmin用于指定数组的维度

1.1定义一维数组

arr = np.array([10, 20, 30, 40])
print(arr)

1.2定义二维数组

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

2.Numpy的数据类型

序号数据类型语言描述
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_表示字符串类型
21string_表示字节串类型

3.数据类型标识码

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

4.array的API

4.1astype()

转换数据类型

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4.dtype)
arr41=arr4.astype(float)
print(arr41)
print(arr41.dtype)

4.2max()

求数组最大元素

4.3min()

求数组最小元素

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4.max())
print(arr4.min())

4.4sum()

求和

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4.sum(axis=1))
print(arr4.sum(axis=0))
print(arr4.sum())

二维数组中

行:axis=1

列:axis=0

4.5reshape()

返回修改维度后的数组

arr4 = np.array([[1,2,3,4,5,6]])
print(arr4.reshape(2,3))
print(arr4.reshape(3,-1))

-1表示形状占位符,numpy自动根据元素组的长度进行计算

order='C'

按行填充

arr52 = np.array([1,2,3,4,5,6,7,8])
print(arr52.reshape((2, 4), order='C'))

order='F'

按列填充

arr51 = np.array([1,2,3,4,5,6,7,8])
print(arr51.reshape((2, 4), order='F'))

4.6random.rand()

生成指定数量的标准正态分布数据,均值:0,方差:1

arr = np.random.randn(10)
print(arr)

生成一个3行3列的二维正太分布的样本数据

arr1 = np.random.randn(3,3)
print(arr1)

5.数组属性

5.1ndim

查看数组维度

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

5.2shape

(1)查看数组的维度

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

(2)修改数组维度

直接在原数组上修改维度

arr5 = np.array([1,2,3,4,5,6,7,8])
arr5.shape=(2,4)
print(arr5)

5.3itemsize

返回数组中的元素的字节大小

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

5.4flags

显示数据在内存的存储信息

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

6.创建数组方法

6.1arrage()

6.2empty()

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

创建一个数组,以随机数填充

arr6 = np.empty((3,4))
print(arr6)

6.3zeros()

创建一个数组,以0填充

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

arr7 = np.zeros((2,3),order='C')
print(arr7)

6.4ones()

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

创建一个数组,以1填充

arr8 = np.zeros((3,3),dtype="i4",order='C')
print(arr8)

6.5arange()

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

arr91 = np.arange(9)
print(arr91)
arr92 = np.arange(1,20,2)
print(arr92)
arr93 = np.arange(-1,-10,-3,dtype="i1")
print(arr93)
arr94 = np.arange(-0.1,-1,-0.2)
print(arr94)

6.6linspace()

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

如果endpoint=True,step=(stop-start)/(num-1)

如果endpoint=False,step=(stop-start)/num

arr10 = np.linspace(10,100,10)
print(arr10)
arr11 = np.linspace(1,9,5,endpoint=False,retstep=True)
print(arr11)
arr12 = np.linspace(1,9,5,endpoint=True,retstep=True)
print(arr12)

7.切片

7.1slice(start,stop,step)

切片范围粗糙,start:开始的行数,stop:结束的行数(不包含)

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[slice(0,len(arr),1)])

7.2[start:stop:step]

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[...,1])# 第2列元素
print(arr[1,...])# 第2行元素
print(arr[1:3,...])  # 第1,2行所有元素
print(arr[...,1:2]) # 第2列的所有元素
print(arr[1:2,1:2])# 第2行第2列元素

8.高级索引

8.1整数数组索引

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
#[0,1,0]为行索引,[0,1,2]为列索引,两者相应位置组合为要索引的位置
print(arr[[0,1,0],[0,1,2]])

8.2bool索引

布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。

  • 用比较运算符进行索引
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr>5)
print(arr[arr>5])
  • 用逻辑运算符进行索引
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[~(arr>5)])

逻辑运算符

  • &:与运算

  • |:或运算

  • ~:非运算,取反

9.广播

对数组在横向或纵向上进行一定次数的重复进行填充, 使参与运算的数组维度相同.

广播规则

  1. 维度匹配:如果两个数组的维度数不同,维度数较少的数组会在前面补上长度为 1 的维度。

  2. 长度匹配:如果两个数组在某个维度上的长度不同,但其中一个数组在该维度上的长度为 1,则该数组会沿着该维度进行广播。

  3. 不匹配:如果两个数组在某个维度上的长度既不相同也不为 1,则广播失败,抛出 ValueError。

理解:需要扩充的维度,复制样本为1.

9.1一维数组与标量相加

arr1 = np.array([1, 2, 3])
print(arr1+10)

9.2二维数组与一维数组相加

arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2 = np.array([4,3,2])
print(arr1+arr2)

9.3二维数组与二维数组相加

arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[4], [5], [6]])
print(arr1 + arr2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VScode远程服务器之远程容器进行开发(四)

VScode远程服务器之远程容器进行开发(四) Remote-Containers 可以让vscode使用docker中的容器环境进行开发和debug。 1. 使用一个运行中的容器进行开发 - Attach to running container 如果正好有一个正在运行的容器。可能是正在运行的服务,或者是预先build好的开发镜像…

2024.10.9华为留学生笔试题解

第一题无线基站名字相似度 动态规划 考虑用动态规划解决 char1=input().strip() char2=input().strip() n,m=len(char1),len(char2) dp=[[0]*(m+1) for _ in range(n+1)] #dp[i][j]定义为以i-1为结尾的char1 和以 j-1为结尾的char2 的最短编辑距离 setA = set(wirel@com) set…

初识Java GUI 编程

文章目录 前言一、什么是 GUI 编程?二、Java GUI 编程的基础组件1. JFrame2.JButton3. JLabel提示 三、布局管理器结语 前言 在当今的软件开发领域,图形用户界面(GUI)的重要性不言而喻。它为用户提供了直观、友好的交互方式&…

MySQL初阶——隔离级别之Read view

一、什么是快照? 当运行 select 查询语句时,才会触发快照,创建 read view 对象,把此时正在处理(未提交)的事务的 ID 都记下来,以便于后面查询时可以控制该读哪些事务的记录,不该读哪…

基于Multisim8路彩灯循环控制电路设计与仿真

1.彩灯能够自动循环点亮; 2.彩灯循环频率快慢可调; 3.彩灯具有8路输出。 4.自行设计脉冲信号产生电路。 链接:https://pan.baidu.com/s/1PhpVy58Y6-_uXnie8KYyzg 提取码:zjad

数学建模2:回归分析预测

回归模型是什么 回归分析预测模型是一种统计方法,用于研究变量之间的关系,并通过已知数据来预测一个变量的值。回归分析通常包括自变量和因变量,目标是建立一个回归模型来描述它们之间的关系。 简单来说回归模型就是找出一条直线或曲线来尽可…

若依框架的下载与配置

1. 若依版本 RuoYi-Vue前后端分离版。 2. 框架下载 2.1 后端框架下载 https://gitee.com/y_project/RuoYi-Vue 2.2 前端框架下载 https://github.com/yangzongzhuan/RuoYi-Vue3 3. 数据库配置 3.1 创建数据库 基于MySQL数据库,创建数据库:ry-vu…

【Eclipse系列】The word is not correctly spelled问题解决

问题描述:在eclipse编写代码时,偶尔会出现了The word is not correctly spelled的错误,但代码执行没有问题,查阅相关资料才发现是eclipse的拼写检查问题。 处理方法:在eclipse下的Window--Preference输入spelling&am…

【软件测试: jmeter工具】OS进程取样器调用python

在jmeter中有时候需要调用自定义函数进行加密、解密等拓展功能 本文通过识别验证码处理登录验证码为例,通过OS进程取样器,调用python函数实现 识别验证码的python函数源码 import base64 from io import BytesIO from PIL import Image import sys im…

nginx中的HTTP 负载均衡

HTTP 负载均衡:如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上,我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡: upstr…

OpenVLA-首个开源视觉语言动作大模型

官网:https://openvla.github.io/ 现在大模型已经卷到了机器人领域。 在视觉语言模型(VLM)的基础上, 加入机器人的动作(Action) 这一模态, 视觉语言动作大模型(VLA)是目前大模型应用…

网络知识总结

osi七层模型 osi七层模型分为:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 应用层:客户端与服务端之间建立一个通话界面表示层:对数据进行语言转换&#xf…

Android Framework AMS(06)startActivity分析-3(补充:onPause和onStop相关流程解读)

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要解读AMS通过startActivity启动Activity的整个流程的补充,更新了startActivity流程分析部分。 一般来说,有Activ…

基于Springboot在线视频网站的设计与实现

基于Springboot视频网站的设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:idea 源码获取:https://do…

15.JVM垃圾收集算法

一、垃圾收集算法 1.分代收集理论 分代收集理论是JAVA虚拟机进行垃圾回收的一种思想,根据对象存活周期的不同将内存分成不同的几个区域;一般将JAVA堆内存分为新生代和老年代;根据每个分代特点选择不同的垃圾收集器; 在新生代中&am…

UE4 材质学习笔记12(水体反射和折射)

一.水体反射和折射 首先就是要断开所有连接到根节点的线,因为水有很多不同的节点成分,当所有其他节点都在用时 要分辨出其中一个是何效果是很难的。 虚幻有五种不同的方法可以创建反射,虚幻中的大多数场景使用多种这些方法 它们会同时运作。…

开源vGPU方案 HAMi实现细粒度GPU切分——筑梦之路

前言 为什么需要 GPU 共享、切分等方案? 在使用GPU的过程中我们会发现,直接在裸机环境使用,都可以多个进程共享 GPU,怎么到 k8s 环境就不行了? 1. 资源感知 在 k8s 中资源是和节点绑定的,对于 GPU 资源…

【Linux】僵尸进程和孤儿进程

一、僵尸进程 何为僵尸进程? 在 Unix/Linux 系统中,正常情况下,子进程是通过父进程创建的,且两者的运行是相互独立的,父进程永远无法预测子进程到底什么时候结束。当一个进程调用 exit 命令结束自己的生命时&#xff…

《编程入门与提高:开启数字世界的大门》

《编程入门与提高:开启数字世界的大门》 一、引言二、编程入门的基础知识(一)编程语言的选择(二)编程环境的搭建(三)编程的基本概念(四)编程的基本语法 三、编程入门的方…

哪些方法可以缓解面试紧张?

面试紧张是许多人在面对重要职业机会时的一种常见情绪。虽然一定程度的紧张可能激发人的潜能,但过度的紧张则可能影响到面试表现。为了缓解面试紧张,以下是一些有效的方法: 1.充分准备: 深入了解公司背景、职位要求以及公司文化…