Numpy 库 矩阵数学运算,点积,文件读取和保存等

目录

1.数组(矩阵)的组合

                                                                                                   

2.数组(矩阵)的切割

3.数组的数学运算

4.数组的深拷贝和浅拷贝

5.随机模块

6.矩阵统计运算

7.矩阵的特有运算点积,求逆

8.文件读取和保存


1.数组(矩阵)的组合

  • 水平组合(hstack)和垂直组合(vstack):
    • hstack 将多个矩阵按列方向拼接(如三行三列 + 三行三列 → 三行六列)。
    • vstack 将多个矩阵按行方向拼接(如三行三列 + 三行三列 → 六行三列)。
  •  concatenate 函数,可通过 axis 参数指定组合方向(axis=0 为垂直,axis=1 为水平)。
    import numpy as np
    array1=np.arange(9).reshape(3,3)
    print(array1)
    [[0 1 2][3 4 5][6 7 8]]
    array2=2*array1
    print(array2)
    [[ 0  2  4][ 6  8 10][12 14 16]]# 水平组合
    a3=np.hstack((array1,array2))
    print(a3)
    [[ 0  1  2  0  2  4][ 3  4  5  6  8 10][ 6  7  8 12 14 16]]
    a4=np.hstack((array2,array1))
    print(a4)
    [[ 0  2  4  0  1  2][ 6  8 10  3  4  5][12 14 16  6  7  8]]
    a5=np.hstack((array1,array2,array1))
    print(a5)
    [[ 0  1  2  0  2  4  0  1  2][ 3  4  5  6  8 10  3  4  5][ 6  7  8 12 14 16  6  7  8]]
    a6=np.concatenate((array1,array2),axis=0)#连接
    print(a6)
    [[ 0  1  2][ 3  4  5][ 6  7  8][ 0  2  4][ 6  8 10][12 14 16]]
    #垂直组合
    a7=np.vstack((array1,array2))
    print(a7)
    [[ 0  1  2][ 3  4  5][ 6  7  8][ 0  2  4][ 6  8 10][12 14 16]]

                                                                                                       

2.数组(矩阵)的切割

  • 水平切割(hsplit)和垂直切割(vsplit):
    • hsplit(array, 2) 将矩阵水平切分为两部分(如四行四列 → 两个四行两列)。
    • vsplit 按行切分(如四行四列 → 两个两行四列)。
  •  split()函数,通过 axis 参数指定切分方向。
    import numpy as np
    array1=np.arange(16).reshape(4,4)
    print(array1)
    [[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11][12 13 14 15]]# 水平切割
    a=np.hsplit(array1,2)#2表示二等分切割
    print(a)
    [array([[ 0,  1],[ 4,  5],[ 8,  9],[12, 13]]), array([[ 2,  3],[ 6,  7],[10, 11],[14, 15]])]b=np.split(array1,2,axis=1)
    print(b)
    [array([[ 0,  1],[ 4,  5],[ 8,  9],[12, 13]]), array([[ 2,  3],[ 6,  7],[10, 11],[14, 15]])]# 垂直切割
    c=np.vsplit(array1,2)
    print(c)
    [array([[0, 1, 2, 3],[4, 5, 6, 7]]), array([[ 8,  9, 10, 11],[12, 13, 14, 15]])]d=np.split(array1,2,axis=0)
    print(d)
    [array([[0, 1, 2, 3],[4, 5, 6, 7]]), array([[ 8,  9, 10, 11],[12, 13, 14, 15]])]

  • 补充:强制切割array_split),当无法均分时按近似规则切分(如五行五列按列切三份 → 2列+2列+1列)。
    # 强制切割
    # 水平切割
    e=np.array_split(array1,3,axis=1)
    #垂直切割
    f=np.array_split(array1,3,axis=0)

                                                                                                                                                         

3.数组的数学运算

import numpy as np
array1=np.arange(1,5,1).reshape(2,2)
print(array1)
[[1 2][3 4]]
array2=2*array1
print(array2)
[[2 4][6 8]]# 数组的加法运算(对应位置的元素求和)
print(array1+array2)
[[ 3  6][ 9 12]]
# 数组的减法运算(对应位置的元素求差)
print(array1-array2)
[[-1 -2][-3 -4]]
# 数组的乘法运算(对应位置的元素相乘)
print(array1*array2)
[[ 2  8][18 32]]
# 数组的除法运算(对应位置的元素相除)
print(array1/array2)
[[0.5 0.5][0.5 0.5]]
# 数组的取余运算(%)
print(array1%array2)
[[1 2][3 4]]
# 数组的取整运算
print(array1//array2)
[[0 0][0 0]]

4.数组的深拷贝和浅拷贝

浅拷贝(赋值)会导致原数组与拷贝数组同步修改(如 array2 = array1)。
深拷贝(array.copy())独立于原数组,修改不影响原数据。

5.随机模块

使用随机种子(numpy.random.seed)控制随机数生成,仅对 numpy.random 有效。
生成随机数的方法:randint(整数)、rand(0-1小数)、normal(正态分布)。
正态分布参数:均值(loc)控制中心位置,标准差(scale)控制离散程度。
批量生成随机矩阵(如 size=(5,5))。

import numpy as np
r1=np.random.rand()
print(r1)
0.8149436420776961r2=np.random.normal()
print(r2)
-1.1160570318641674# 生成随机数矩阵
r3=np.random.randint(0,10,size=(5,5))
print(r3)
[[8 9 2 2 6][4 9 7 9 7][0 0 9 7 8][1 4 1 8 0][2 0 2 2 9]]r4=np.random.rand(5,5)
print(r4)
[[0.60023193 0.01419595 0.05549209 0.67160039 0.78314385][0.19544064 0.73777977 0.85955638 0.34585567 0.13006794][0.36708803 0.16558952 0.44353464 0.06849265 0.86387693][0.05052874 0.16835242 0.04308036 0.19164382 0.27588562][0.40844913 0.22696977 0.47796595 0.0091897  0.37547072]]r5=np.random.normal(5,10,size=(5,5))
print(r5)
[[  1.0609002   -8.5392921    9.48242322   0.75154795   3.48753174][ -4.0785129    8.4907759    6.11792809   2.05999932  -1.01203744][ -9.74659156   5.86627773  -6.91534249  28.65949618  -4.39634281][ -3.26680732   2.22344898  -0.54337157  -3.92376473  15.58922743][-15.10813251  -1.25358692  -9.96625947   4.65529048  -7.1070343 ]]

6.矩阵统计运算

基础统计:方差(var)、标准差(std)、均值(mean)、求和(sum)、中位数(median)。
按行/列求和:通过 axis 参数(axis=1 为行,axis=0 为列)。

import numpy as nparray1=np.random.normal(size=(3,3))
print(array1)
[[-1.84629    -1.50233883 -0.30569565][-1.01779658 -1.12859979  0.48594668][ 1.01978122 -1.22772969 -0.22122007]]# 求方差
print(array1.var())
0.8039318921061643# 求标准差
print(array1.std())
0.8966224914121685# 求均值
print(array1.mean())
-0.638215856182889# 求和
print(array1.sum())
-5.743942705646001
# 求中位数
print(np.median(array1))
-1.0177965755982301
# 对矩阵的行求和
print(array1.sum(axis=1))
[-3.65432448 -1.66044968 -0.42916854]
# 对矩阵的列求和
print(array1.sum(axis=0))
[-1.84430536 -3.85866831 -0.04096904]

7.矩阵的特有运算点积,求逆

  • 点乘:a.dot(b) 或 numpy.dot(a, b),示例演示了矩阵乘法规则(如形状匹配)。
  • 求逆:numpy.linalg.inv,验证逆矩阵的正确性(原矩阵与逆矩阵相乘为单位矩阵)。
    import numpy as np
    a=np.arange(4).reshape(2,2)
    [[0 1][2 3]]
    b=a.copy()
    [[0 1][2 3]]
    a1=a.dot(b)
    print(a1)
    [[ 2  3][ 6 11]]
    a2=np.dot(a,b)
    print(a2)
    [[ 2  3][ 6 11]]         # 并不是所有矩阵都有逆,即使你没有,也会给你一个伪逆
    a3=np.linalg.inv(a)
    print(a3)
    [[-1.5  0.5][ 1.   0. ]]

    8.文件读取和保存

  • 直接读取文本文件为矩阵:numpy.loadtxt,支持按分隔符解析数据,对于使用 tab 键分隔的文件,分隔符应设置为 \t;对于 CSV 文件,分隔符应设置为逗号(,)。
  • numpy.save 将矩阵存储为文件,存储的文件可直接打开查看矩阵内容。
  • 优势:避免手动转换字符串为数值类型,适合机器学习数据预处理
    # import numpy as np
    # data = np.loadtxt('',delimiter='')#delimiter指定分隔符# 将数组保存到txt文件中
    import numpy as np
    array=np.array([[1,2,3],[4,5,6],[7,8,9]])
    np.savetxt('array.txt',array)

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

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

相关文章

STL学习(?函数对象,谓词,内建函数对象)

目录 一、函数对象 1.函数对象的概念 2.函数对象的使用 (1)函数对象在使用的时候,可以像普通函数那样调用,可以有参数,也可以有返回值。 (2)函数对象超出普通函数的概念,函数对象…

【爬虫】05 - 爬虫攻防

爬虫05 - 爬虫攻防 文章目录爬虫05 - 爬虫攻防一:随机User-Agent爬虫1:fake-useragent2:高级反反爬策略3:生产环境建议二:代理IP爬虫1:获取代理IP2:高阶攻防3:企业级的代理实战三&am…

FPGA自学——存储器模型

FPGA自学——存储器模型 文章目录FPGA自学——存储器模型一、IP核二、ROM(read only memory)三、ROM的IP核调用四、RAM(random access memory)五、RAM的IP核调用总结1.不同波形的使用的存储器2.块与分布式的选择3.FPGA与模块的容量…

【C++】stack和queue拓展学习

目录 1.反向迭代器思路及实现 1.1. 源码及框架分析 1.2. 实现反向迭代器 2.stack和queue练习拓展-计算器实现 2.1. 后缀表达式概念 2.2. 后缀表达式运算规则 2.3. 中缀表达式转后缀表达式 2.3.1 转换思路 2.3.2 代码实现 2.4. 计算器实现 1.反向迭代器思路及实现 1.1…

Web3与区块链如何革新网络安全——走在前沿

随着互联网技术的飞速发展,网络安全问题日益成为全球关注的焦点。Web3和区块链技术作为新兴的技术力量,正在逐步改变网络安全的格局。本文将探讨Web3和区块链技术如何革新网络安全,走在技术前沿。 1. Web3技术概述 Web3,即第三代互…

网络初级安全第三次作业

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用户登录</title><style>* {margin:…

CSS中用display实现元素的显示/隐藏切换

** 通过display中的none和block ** 在前端开发中&#xff0c;display: none 和 display: block 是两种常用的 CSS 显示模式&#xff0c;核心区别在于&#xff1a;是否在页面中保留元素的占位空间 1. 核心区别属性display: nonedisplay: block占位空间元素完全从渲染树中移除&am…

因果图方法设计测试用例的价值与使用范围

一、因果图方法的核心原理 因果图方法通过分析软件规格说明中的输入条件&#xff08;因&#xff09;和输出结果&#xff08;果&#xff09;之间的逻辑关系&#xff0c;利用图形化方式将这些关系清晰展现。它使用特定的符号表示因果关系&#xff08;如恒等、非、或、与&#xff…

智慧农服数字化平台-数字科技赋能农业,开启智慧三农新篇章

智慧农服数字化平台数字科技赋能农业&#xff0c;开启智慧三农新篇章平台概览在乡村振兴和农业现代化的时代背景下&#xff0c;我们推出了创新的农业服务数字化平台——一个专为农业生产者打造的综合性SaaS服务平台。平台以"科技助农、数据兴农"为使命&#xff0c;通…

在线教育培训课程视频如何防下载、防盗录?

在数字化学习日益普及的今天&#xff0c;高质量的在线课程已成为教育机构、知识付费平台和讲师的核心竞争力。如何在不影响学员正常学习体验的前提下&#xff0c;有效防止课程视频被恶意盗取&#xff1f;今天介绍在线教育课程防下载、防盗录的10种视频加密方法&#xff0c;看看…

图像分析学习笔记(2):图像处理基础

图像分析学习笔记&#xff1a;图像处理基础图像增强方法图像复原方法图像分割方法形态学处理图像增强方法 目的&#xff1a;改善视觉效果&#xff0c;例如增强对比度定义&#xff1a;为了改善视觉效果、便于人或计算机对图像的分析理解&#xff0c;针对图像的特点或存在的问题…

生存分析机器学习问题

研究目标&#xff1a; 开发一个机器学习模型&#xff0c;用于个性化预测XXX的总体生存期。 模型输入&#xff1a;结合生存时间、治疗方案、人口统计学特征和实验室测试结果等多种特征。 模型输出&#xff1a;预测二元结果&#xff08;活着 vs. 死亡&#xff09;。 应用场景&…

【华为机试】547. 省份数量

文章目录547. 省份数量描述示例 1示例 2提示解题思路核心分析问题转化算法选择策略1. 深度优先搜索 (DFS)2. 广度优先搜索 (BFS)3. 并查集 (Union-Find)算法实现详解方法一&#xff1a;深度优先搜索 (DFS)方法二&#xff1a;广度优先搜索 (BFS)方法三&#xff1a;并查集 (Union…

09_Spring Boot 整合 Freemarker 模板引擎的坑

09_Spring Boot 整合 Freemarker 模板引擎的坑 1.背景&#xff1a; springboot 版本&#xff1a;3.0.2 2. 引入依赖 在 pom.xml 中添加&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web<…

十七、【Linux系统yum仓库管理】替换阿里源、搭建本地yum源

替换阿里源、搭建本地yum源本章学习目标内容简介阿里外网源核心功能本地yum核心功能操作演示替换阿里外网源备份原有yum源清理冲突配置下载阿里源配置文件添加EPEL扩展源清理缓存重建索引验证源状态测试安装软件使用镜像搭建本地仓库准备ISO镜像创建挂载点目录挂载iso文件验证挂…

家庭网络怎么进行公网IP获取,及内网端口映射外网访问配置,附无公网IP提供互联网连接方案

在家庭网络中&#xff0c;我们常常需要通过公网IP来访问内网中的设备&#xff0c;比如家庭NAS、Web服务器或监控摄像头。要实现这个目标&#xff0c;首先要确保你的网络具有一个可用的公网IP&#xff0c;然后通过路由器配置端口映射&#xff08;Port Forwarding&#xff09;。如…

(LeetCode 面试经典 150 题 ) 128. 最长连续序列 (哈希表)

题目&#xff1a;128. 最长连续序列 思路&#xff1a;哈希表&#xff0c;时间复杂度0(n)。 用集合set来实现哈希表的功能&#xff0c;记录所有出现的元素。然后遍历元素&#xff0c;细节看注释。 C版本&#xff1a; class Solution { public:int longestConsecutive(vector&…

Altera Quartus:BAT批处理实现一键sof文件转换为jic文件

sof文件是Quartus编译默认生成的程序文件&#xff0c;用于通过JTAG口下载到FPGA内部RAM&#xff0c;断电程序会丢失&#xff0c;jic文件是用于固化到外部Flash中的程序文件&#xff0c;断电程序不会丢失。本文介绍如何通过批处理文件实现sof到jic的一键自动化转换。 Quartus工程…

基于单片机婴儿床/婴儿摇篮/婴儿车设计/婴儿监护系统

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 本设计实现了一种基于单片机的多功能智能婴儿监护系统&#xff0c;集成于婴儿床、摇篮或婴儿车中…

Typora + 七牛云图床终极配置教程

本文是一份超详细的 Typora 七牛云图床配置指南&#xff0c;旨在帮助你实现图片“即插即用”的顺滑写作体验。我们将一步步完成所有配置&#xff0c;并特别针对配置过程中最常见的三个错误&#xff1a;ENOTFOUND (找不到服务器)、401 (无权访问) 和 Document not found (文件不…