numpy库 降维,矩阵创建与元素的选取,修改

目录

1.降维函数ravel()和flatten

ravel():

flatten():

2.矩阵存储与内存结构

3.修改矩阵形状的方法

4.特殊矩阵创建

全零矩阵: 如np.zeros(5) 创建含5个零的一维数组,输出中零后的点(如 0.)表示浮点数类型。

全一矩阵:如np.ones(5)创建含5个1的一维数组

​编辑

矩阵中填充指定数据

对角线为1的矩阵

5.序列生成函数

                                                                                                  

6.一维数组元素的选取和修改

7.二维数组元素的选取和修改

8.三维矩阵元素的选取和修改


1.降维函数ravel()和flatten

ravel():

高维数据转换为一维,返回原始数据的视图(内存共享),仅改变展示形式(如三维→一维)。
示例:V.ravel() 生成一维数组 r2,与原数据 V 共享内存。

import numpy as np
list1=[1,2,3,4,5,6,7,8]
v=np.array(list1)
v=v.reshape(2,2,2)
r2=v.ravel()
print(r2)#[1,2,3,4,5,6,7,8]


flatten():

同样降维为一维,但返回元数组的副本(内存独立),修改副本不影响原数据
示例:V.flatten() 生成 r3,与原数据 V 无关联。
核心区别: ravel 不创建副本,flatten 创建副本(独立内存)

        

import numpy as np
list1=[1,2,3,4,5,6,7,8]
v=np.array(list1)
v=v.reshape(2,2,2)
r3=v.flatten()#非常重要
print(r3)#[1,2,3,4,5,6,7,8]

2.矩阵存储与内存结构

矩阵数据在内存中以链式结构存储(非连续块),按需分配空间,避免内存浪费。
矩阵的“展示形式”(如 2×2)仅为逻辑视图,实际存储通过指针链接分散的内存区域。

3.修改矩阵形状的方法

shape 属性: 直接修改(如 V.shape = (2,4))可调整维度结构。
其他方法: reshape、ravel、flatten 均可实现升维/降维

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

4.特殊矩阵创建

np.zeros():创建全零矩阵,默认浮点类型。
np.ones():创建全一矩阵,类似 np.zeros() 用法。
np.full():填充指定值(如 np.full((2, 2), 5) 生成全为 5 的矩阵)。
np.eye():生成单位矩阵(主对角线为 1,如 np.eye(5, 5))。

  • 全零矩阵: 如np.zeros(5) 创建含5个零的一维数组,输出中零后的点(如 0.)表示浮点数类型。

    import numpy as np
    #创建全为0的数组
    a=np.zeros(5)
    b=np.zeros((2,2))#只能接受一个参数
    c=np.zeros((3,2,2))
    print(a,'\n',b,'\n',c)

  • 注意:函数接收单个参数时,若需传递多值(如矩阵维度),需将值包装为元组(如 (2, 2))np.zeros((2, 2)) 创建 2x2 全零矩阵,外层括号为函数调用,内层为元组参数。

  • 全一矩阵:如np.ones(5)创建含5个1的一维数组

    import numpy as np    
    #创建全为一的数组
    d=np.ones(5)
    e=np.ones((2,2))
    f=np.ones((3,2,2))
    print(d,'\n',e,'\n',f)

  • 矩阵中填充指定数据

    import numpy as np
    g=np.full((2,2,2),5)
    print(g)

    生成一个全为5的(2,2,2)的三维数据

  • 对角线为1的矩阵

    import numpy as np
    h=np.eye(5,5)
    print(h)[[1. 0. 0. 0. 0.][0. 1. 0. 0. 0.][0. 0. 1. 0. 0.][0. 0. 0. 1. 0.][0. 0. 0. 0. 1.]]

5.序列生成函数

  • np.arange():类似 range(),生成等差序列的矩阵(如 np.arange(0, 9, 3) 生成 [0, 3, 6])。
    import numpy as np
    r1=np.arange(0,9,3)#(start,end,step)左闭右开的产生有规律的数据,与range()相似
    print(r1)[0 3 6]
  • np.linspace():在指定区间内均匀分割生成数据(如 np.linspace(0, 1, 21) 生成 21 个等间隔值)。
    import numpy as np
    r2=np.linspace(0,1,21)#(start,end,nums),左右都是闭区间
    print(r2)
    [0.   0.05 0.1  0.15 0.2  0.25 0.3  0.35 0.4  0.45 0.5  0.55 0.6  0.650.7  0.75 0.8  0.85 0.9  0.95 1.  ]

                                                                                                      

6.一维数组元素的选取和修改

索引与切片:与列表操作一致(如 array1[1] 获取索引 1 的值)。
批量索引:通过列表指定多个索引(如 array1[[1, 3, 5]] 提取对应位置的值)。
修改元素:
单点修改:array1[0] = 10。
批量修改:array1[[1, 3, 5]] = 20 或切片赋值 array1[0:6] = 100

import numpy as np
array1=np.arange(1,9,1)
print(array1)# 选取某个元素
a=array1[1]# 选取某些元素
b=array1[[1,3,5]]
print(b)# 切片左闭右开
c=array1[0:6]
print(c)
# 修改某个元素
array1[0]=10
# 批量修改某些元素
array1[[1,3,5]]=20
print(array1)
array1[0:5]=10
print(array1)
[1 2 3 4 5 6 7 8]
[2 4 6]
[1 2 3 4 5 6]
[10 20  3 20  5 20  7  8]
[10 10 10 10 10 20  7  8]

注意:中括号 [] 在矩阵操作中仅用于索引/切片或创建列表,需注意上下文区分。

7.二维数组元素的选取和修改

import numpy as np
array1=np.arange(24).reshape(4,6)
print(array1)
[[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]]# 选取某个元素
a=array1[1,4]#第二行五列
# 选取某行元素
b=array1[1,:]#逗号分隔行和列
# 选取某些行
c=array1[[0,2],:]#如果不是连续的行,[]# 选取某列
d = array1[:,1]
# 选取某些列
e=array1[:,[1,3]]# 修改某个元素
array1[1,4]=100
# 修改某行元素
array1[1,:]=100
array1[[1,2],:]=50

8.三维矩阵元素的选取和修改

第一个逗号分隔维度,后续逗号分隔行和列(如 1,0,0 表示第一组数据的第0行第0列)

import numpy as np
array1=np.arange(48).reshape(2,4,6)
print(array1)
[[[ 0  1  2  3  4  5][ 6  7  8  9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]][[24 25 26 27 28 29][30 31 32 33 34 35][36 37 38 39 40 41][42 43 44 45 46 47]]]
# 选取某个元素
# 首先确定选取哪个二维数组
a=array1[1,0,0]
print(a)
24
# 选取某行元素
b=array1[1,0,:]
print(b)
[24 25 26 27 28 29]
# 选取某些行元素
c=array1[0,[1,3],:]
print(c)
[[ 6  7  8  9 10 11][18 19 20 21 22 23]]
d=array1[0,1:3,:]
print(d)
[[ 6  7  8  9 10 11][18 19 20 21 22 23]]
# 选取某列
e=array1[0,:,1]
print(e)
[ 1  7 13 19]
# 选取某些列
f=array1[1,:,[1,3]]
print(f)
[[25 31 37 43][27 33 39 45]]
g=array1[0,:,1:4]
print(g)
[[ 1  2  3][ 7  8  9][13 14 15][19 20 21]]
# 修改
array1[1,0,0]=100

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

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

相关文章

SpringCloud seata全局事务

项目https://github.com/apache/incubator-seata docker拉取启动server $ docker run --name seata-server -p 8091:8091 apache/seata-server:2.1.0 seata注册到nacos <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-…

OpenLayers 快速入门(八)事件系统

看过的知识不等于学会。唯有用心总结、系统记录&#xff0c;并通过温故知新反复实践&#xff0c;才能真正掌握一二 作为一名摸爬滚打三年的前端开发&#xff0c;开源社区给了我饭碗&#xff0c;我也将所学的知识体系回馈给大家&#xff0c;助你少走弯路&#xff01; OpenLayers…

【Linux | 网络】应用层(HTTPS)

目录一、HTTPS的概念二、准备概念2.1 什么是加密和解密2.2 为什么要加密2.3 常见的加密方式2.3.1 对称加密2.3.1 非对称加密2.4 数据摘要&&数据指纹三、HTTPS理解过程3.1 只使用对称加密3.2 只使用非对称加密3.3 双方都使用非对称加密3.4 对称加密 非对称加密3.5 中间…

GRE协议

一、实验拓扑二、实验配置1、静态路由实现GRERT1配置&#xff1a;RT1(config)# int fa1/0RT1(config-if)# ip add 192.168.20.1 255.255.255.0RT1(config-if)# no shutdownRT1(config)# int fa0/0RT1(config-if)# ip add 172.1.1.2 255.255.255.0RT1(config-if)# no shutdownRT…

JDialong弹窗

public class DialogDemo extends JFrame {public DialogDemo(){this.setVisible(true);this.setSize(700,500);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//JFrame 放东西&#xff0c;容器Container contentPane this.getContentPane();//绝对布局conte…

tlias智能学习辅助系统--违纪处理(实战)

目录 1.StudentController.java 2.interface StudentService 3.StudentServiceImpl.java 4.interface StudentMapper 1.StudentController.java // 违纪处理PutMapping("/violation/{id}/{score}")Operation(summary "违纪处理")public Result violat…

传统RNN模型笔记:输入数据长度变化的结构解析

一、案例背景 本案例通过PyTorch的nn.RNN构建单隐藏层RNN模型&#xff0c;重点展示RNN对变长序列数据的处理能力&#xff08;序列长度从1变为20&#xff09;&#xff0c;帮助理解RNN的输入输出逻辑。 二、核心代码与结构拆解 def dm_rnn_for_sequencelen():# 1. 定义RNN模型rnn…

OpenLayers 快速入门(四)View 对象

看过的知识不等于学会。唯有用心总结、系统记录&#xff0c;并通过温故知新反复实践&#xff0c;才能真正掌握一二 作为一名摸爬滚打三年的前端开发&#xff0c;开源社区给了我饭碗&#xff0c;我也将所学的知识体系回馈给大家&#xff0c;助你少走弯路&#xff01; OpenLayers…

测试左移方法论

测试左移&#xff08;Shift-Left Testing&#xff09;​是一种软件测试方法论&#xff0c;核心思想是将测试活动从传统的开发后期&#xff08;如系统测试、验收测试阶段&#xff09;提前到软件生命周期的更早期阶段&#xff08;如需求分析、设计、编码阶段&#xff09;&#xf…

OpenCV(01)基本图像操作、绘制,读取视频

图像基础 import cv2 as cv#读取图像 cv.imread(path,读取方式)默认读为彩色图像 #cv.imread(path) cat cv.imread(E:\hqyj\code\opencv\images\\face.png)#显示图像 cv.imshow(window,img) cv.imshow(myimg,cat)print(cat) print(cat.shape) #(h,w,c) 元组(1,1) print(cat…

biji 1

1.应用层&#xff1a;为应用程序提供网络服务。2.表示层&#xff1a;定义数据的格式&#xff0c;对数据进行压缩、解压缩、加密、解密、编码、解码。3.会话层&#xff1a;对通信双方间的会话进行建立、维护、拆除-----session id---区分同一应用程序的不同进程4.传输层&#x…

mongodb的备份和还原(精简)

1 官网下载对应版本msi2 运行msi mongodb-database-tools-windows-x86_64-100.12.2.msi3 将安装地址加到环境变量 C:\Program Files\MongoDB\Tools\100\bin4 查看version mongodump --version mongorestore --version5 运行 备份命令 mongodump --host 127.0.0.1 --db dbname--…

Mac安装Typescript报错

目录 Mac上安装Typescript报错: 原因分析 1. 默认 npm 全局安装目录的权限问题 2. Node.js 的安装方式 如何解决?(无需每次用 `sudo`) 方法 1:修改 npm 全局目录的权限(推荐) 方法 2:配置 npm 使用用户级目录 方法 3:使用 `nvm` 管理 Node.js(最推荐) 为什么建议避免…

spring-cloud概述

单体架构 把业务的所有功能实现都打包在一个war包或者jar包&#xff0c;这种方式就成为单体架构。 比如Spring课程中的博客系统,前端后端数据库实现&#xff0c;都在一个项目中&#xff0c;这种架构就称为单体架构. 举个例子&#xff1a; 比如在电商系统中&#xff0c;我们…

android ROOM kotlin官方文档完全学习

android ROOM kotlin官方文档完全学习2.6 使用 Room 将数据保存到本地数据库 | Android Developers (google.cn) 一、简介 1.1 引入 dependencies {def room_version "2.6.1"implementation "androidx.room:room-runtime:$room_version"//如下三选一a…

DOM编程全解析:操作、事件与存储实战指南

引言&#xff1a;DOM——JavaScript与网页交互的桥梁 DOM&#xff08;文档对象模型&#xff09; 是JavaScript操作HTML/XML文档的接口&#xff0c;它将网页文档抽象为一个树形结构&#xff0c;允许开发者通过API动态修改文档的内容、结构和样式。无论是实现动态交互&#xff0…

Ansible命令

Ansible命令 ansible 常用命令 /usr/bin/ansible   #Ansibe AD-Hoc 临时命令执行工具&#xff0c;常用于临时命令的执行 /usr/bin/ansible-doc    #Ansible 模块功能查看工具 /usr/bin/ansible-galaxy   #下载/上传优秀代码或Roles模块 的官网平台&#xff0c;基于网…

SY6974芯片添加enable充电控制节点

1. 需求描述项目背景&#xff1a;基于 Qualcomm MDM9x07 平台的 4G MIFI 产品&#xff0c;使用 Silergy 公司的 SY6974 充电 IC需求内容&#xff1a; 在环境 /sys/class/power_supply/sy6794/enable 下增加一个 sysfs 节点&#xff0c;用于控制是否允许充电&#xff1a;cat /sy…

趣玩-Ollama-Llm-Chatrbot

软件说明 这个软件本人是从零开始实现的聊天机器人。基于Ollama&#xff08;PythonApi &#xff09; Pyside&#xff0c;实现了聊天机器的基本功能&#xff0c;还有一些个性化的功能比如模型管理&#xff0c;敏感词过滤&#xff0c;个性化主题设置&#xff0c;头像设置等功能。…

在mac 上zsh 如何安装最新的 go 工具

文章目录方法一&#xff1a;使用 Homebrew&#xff08;推荐&#xff09;方法二&#xff1a;从官网下载安装包方法三&#xff1a;使用 g&#xff08;Go 版本管理器&#xff09;方法四&#xff1a;使用 gvm&#xff08;Go Version Manager&#xff09;验证安装和配置常用 Go 工具…