人工智能中的线性代数总结--简单篇

numpy库中的dot函数来计算矩阵和向量的点积

def matrix_vector_dot_product(a, b):import numpy as npif (len(a[0]) != len(b)):return -1# 使用tolist()将结果转换为列表return np.dot(a, b).tolist()

原始方法

def matrix_vector_dot_product(matrix, vector):if len(matrix[0]) != len(vector):return -1l = []for i in matrix:num = 0for j in range(len(i)):num += (i[j]*vector[j])l.append(num)return l# 主程序
if __name__ == "__main__":# 输入矩阵和向量matrix_input = input()vector_input = input()# 处理输入import astmatrix = ast.literal_eval(matrix_input)vector = ast.literal_eval(vector_input)# 调用函数计算点积output = matrix_vector_dot_product(matrix, vector)# 输出结果print(output)

numpy库中给定的矩阵 A,其转置矩阵表示为 A^T

def transpose_matrix(a: List[List[Union[int, float]]]) -> List[List[Union[int, float]]]:import numpy as npreturn np.array(a).T.tolist()

使用numpy库的reshape方法矩阵重塑

矩阵重塑是将一个矩阵转换为另一个形状的过程,前提是新形状的元素总数与原矩阵相同

def reshape_matrix(a: List[List[Union[int, float]]], new_shape: Tuple[int, int]) -> List[List[Union[int, float]]]:import numpy as npif len(a) * len(a[0]) != new_shape[0] * new_shape[1]:return -1return np.array(a).reshape(new_shape).tolist()

使用numpy库的mean方法按行或列计算平均值

def calculate_matrix_mean(matrix: List[List[Union[int, float]]], mode: str) -> List[float]:import numpy as npif mode == 'column':return np.mean(matrix, axis=0).tolist()elif mode == 'row':return np.mean(matrix, axis=1).tolist()else:raise ValueError("Mode must be 'row' or 'column'")

使用python的广播机制进行标量的矩阵乘法

def scalar_multiply(matrix: List[List[Union[int, float]]], scalar: Union[int, float]) -> List[List[Union[int, float]]]:import numpy as npreturn (np.array(matrix) * scalar).tolist()

使用numpy库的cov方法计算协方差矩阵

协方差矩阵是一种描述两个随机变量之间关系的矩阵,其计算公式为:

import numpy as npdef jia(vectors, a):return [i + a for i in vectors]def dianji(a,b):if len(a) != len(b):return -1s = 0for j in range(len(a)):s += a[j] * b[j]return sdef cov(x,y):return dianji(jia(x, -sum(x)/len(x)),jia(y, -sum(y)/len(y))) / (len(x)-1)def calculate_covariance_matrix(vectors):# 补全代码return [[cov(x,y) for x in vectors] for y in vectors]# 主程序
if __name__ == "__main__":# 输入ndarrayA = input()# 处理输入import astA = ast.literal_eval(ndarrayA)# 调用函数计算output = calculate_covariance_matrix(A)# 输出结果print(output)

原始方法

import numpy as npdef calculate_covariance_matrix(vectors):n_features = len(vectors)n_observations = len(vectors[0])covariance_matrix = np.zeros([n_features, n_features])means = [sum(feature) / n_observations for feature in vectors]for i in range(n_features):for j in range(i, n_features):covariance = sum((vectors[i][k] - means[i]) * (vectors[j][k] - means[j])for k in range(n_observations)) / (n_observations - 1)covariance_matrix[i][j] = covariance_matrix[j][i] = covariancereturn covariance_matrix.tolist()
# 主程序
if __name__ == "__main__":# 输入ndarrayA = input()# 处理输入import astA = ast.literal_eval(ndarrayA)# 调用函数计算output = calculate_covariance_matrix(A)# 输出结果print(output)

基向量变换矩阵

基向量变换矩阵(Basis Vector Transformation Matrix)是一种常用的矩阵,用于将基向量变换为另一个基向量。

import numpy as npdef transform_basis(B, C):B = np.array(B)C = np.array(C)C = np.linalg.inv(C)P = B@Creturn P.tolist()if __name__ == "__main__":B = np.array(eval(input()))C = np.array(eval(input()))print(transform_basis(B, C))

 将向量转换为对角矩阵

def make_diagonal(x):identity_matrix = np.identity(np.size(x))return (identity_matrix*x)

原始方法

def make_diagonal(x):x = np.array(x)zeros = np.zeros((len(x),len(x)),dtype=np.float16)for i in range(len(x)):zeros[i,i]=x[i]return zerosif __name__ == "__main__":x = np.array(eval(input()))print(make_diagonal(x))

实现压缩行稀疏矩阵(CSR)格式转换

压缩行稀疏矩阵(CSR)格式是一种特殊的矩阵存储格式,其特点是只存储非零元素的值、行号和列指针。本质上是一种三元组表示法。

输入

[[1, 0, 0], [2, 3, 0], [0, 4, 5]]

输出

[1, 2, 3, 4, 5]
[0, 0, 1, 1, 2]
[0, 1, 3, 5]

def compressed_row_sparse_matrix(dense_matrix):vals = []col_idx = []row_ptr=[0]for x in dense_matrix:for i,y in enumerate(x):if y!=0:vals.append(y)col_idx.append(i)row_ptr.append(len(vals))return vals, col_idx, row_ptrif __name__ == "__main__":dense_matrix = eval(input())vals, col_idx, row_ptr = compressed_row_sparse_matrix(dense_matrix)print(vals)print(col_idx)print(row_ptr)

实现向量到直线的正交投影

def orthogonal_projection(v, L):import numpy as npv = np.array(v)L = np.array(L)a = (((v@L)/np.dot(L,L))*L)a = a.tolist()return aif __name__ == "__main__":v = eval(input())L = eval(input())print(orthogonal_projection(v, L))

实现压缩列稀疏矩阵

def compressed_col_sparse_matrix(dense_matrix):from scipy.sparse import csc_matrixsparse = csc_matrix(dense_matrix)return sparse.data.tolist(), sparse.indices.tolist(), sparse.indptr.tolist()

原始方法

def compressed_col_sparse_matrix(dense_matrix):vals, row_idx, col_ptr = [],[],[0]import numpy as npdense_matrix = np.array(dense_matrix)dense_matrix = dense_matrix.Tfor i in dense_matrix:for j,x in enumerate(i):if x!=0:vals.append(x)row_idx.append(j)col_ptr.append(len(vals))return vals, row_idx, col_ptrif __name__ == "__main__":dense_matrix = eval(input())vals, row_idx, col_ptr = compressed_col_sparse_matrix(dense_matrix)print(vals)print(row_idx)print(col_ptr)

计算向量之间的余弦相似度

import numpy as npdef cosine_similarity(v1, v2):# Implement your code hereif v1.shape != v2.shape:raise ValueError("Arrays must have the same shape")if v1.size == 0:raise ValueError("Arrays cannot be empty")v1 = v1.flatten()v2 = v2.flatten()val= (v1@v2)/(np.sqrt(np.dot(v1,v1))*np.sqrt(np.dot(v2,v2)))return round(val, 3)if __name__ == "__main__":v1 = np.array(eval(input()))v2 = np.array(eval(input()))print(cosine_similarity(v1, v2))

泊松分布概率计算器

泊松分布是一种描述随机事件发生次数的概率分布,其计算公式为:

import mathdef poisson_probability(k, lam):# Your code hereo=(math.exp(-lam))*(lam**k)u=math.factorial(k)val=o/ureturn round(val, 5)if __name__ == "__main__":k, lam = map(int, input().split())print(poisson_probability(k, lam))

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

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

相关文章

又是全网首创/纯Qt实现28181设备模拟器/rtp视频点播/桌面转28181/任意文件转28181/跨平台

一、前言说明 这个工具前前后后也算是废了不少功夫,最开始是因为28181服务端的组件已经完美实现,对照国标文档看了很多遍,逐个实现需要的交互协议,整体上比onvif协议要难不少,主要是涉及到的东西比较多,有…

安卓逆向(一)Ubuntu环境配置

一、Ubuntu 1、虚拟机 首先准备一个Ubuntu的虚拟机,就随便新建一个就行,我这里使用的是Ubuntu21.04,但是内存跟硬盘大小最好设置的稍微大一点。 2、基础环境 (1)解决apt-get update报错问题 apt-get是Linux系统中一个管…

Go 1.25在性能方面做了哪些提升?

Go 1.25 在性能方面带来了多项重要提升,主要有以下几个方面: 实验性垃圾回收器 GreenTea GC:针对小对象密集型应用优化,显著提升小对象标记和扫描性能,垃圾回收开销减少0-40%,暂停时间缩短,吞吐…

Python与XML文件处理详解(2续):xml.dom.minidom模块高阶使用方法

目录 第一部分:高级节点操作与遍历方法 1.1 更精确的节点导航 1.2 使用 cloneNode() 复制节点 1.3 节点插入、替换与高级管理 第二部分:文档创建与高级输出控制 2.1 使用 Document 工厂方法完整创建文档 2.2 高级输出与序列化控制 第三部分:实用工具函数与模式处理 …

如何利用 ChatGPT 辅助写作

引言 介绍人工智能辅助写作的兴起,ChatGPT 在写作领域的应用潜力,以及本文的核心目标。 ChatGPT 在写作中的核心功能 概述 ChatGPT 的主要功能,包括文本生成、润色、结构优化、灵感激发等。 利用 ChatGPT 辅助写作的具体方法 生成创意与灵感 …

【有鹿机器人自述】我在社区的365天:扫地、卖萌、治愈人心

大家好,我是有鹿巡扫机器人,编号RD-07。今天我想和大家分享这一年来的工作见闻——没错,我们机器人也会"观察"和"感受",尤其是在连合直租将我送到这个社区后,发生的点点滴滴让我拥有了前所未有的&…

第五十五天(SQL注入增删改查HTTP头UAXFFRefererCookie无回显报错复盘)

#数据库知识: 1、数据库名,表名,列名,数据 2、自带数据库,数据库用户及权限 3、数据库敏感函数,默认端口及应用 4、数据库查询方法(增加删除修改更新) #SQL注入产生原理&#xf…

怎么用 tauri 创建一个桌面应用程序(Electron)

以前用 Electron 做过一个桌面应用程序,打包体积确实很大,启动也很慢。这次先 tauri。 并且用 bun 代替 npm 速度更快,避免总是出现依赖问题。 前端用 react 为了学习下,用 js 先现在主流的 typescript。 安装 bun npm instal…

【通过Docker快速部署Tomcat9.0】

文章目录前言一、部署docker二、部署Tomcat2.1 创建存储卷2.2 运行tomcat容器2.3 查看tomcat容器2.4 查看端口是否监听2.5 防火墙开放端口三、访问Tomcat前言 Tomcat介绍 Tomcat 是由 Apache 软件基金会(Apache Software Foundation)开发的一个开源 Jav…

LabVIEW UI 分辨率适配

针对 LabVIEW UI 在不同分辨率下的适配,现有方案分三类:一是现有 VI 可通过 “VI 属性 - 窗口大小” 勾选比例保持或控件缩放选项快速调整,也可取消勾选或换等宽字体防控件移位;二是项目初期以最低目标分辨率为基准,用…

国产化FPGA开发板:2050-基于JFMK50T4(XC7A50T)的核心板

(IEB-PS-3051-邮票孔) 一、核心板概述 板卡基于JFMK50T4国产化FPGA芯片,设计的一款工业级核心板,板卡集成主芯片、电源、DDR、配置芯片,大大减轻客户的扩展开发困难。丰富的IO和4个GTP,让用户轻…

Webpack 核心原理剖析

时至今日,Webpack 已迭代到 5.x 版本,其功能模块的扩充和复杂度的提升使得源码学习成本陡增。官方文档的晦涩表述更是让许多开发者望而却步。然而,理解 Webpack 的核心原理对优化构建流程、定制化打包方案至关重要。本文将通过简化流程和代码…

移植Qt4.8.7到ARM40-A5

移植Qt4.8.7到ARM40-A5 主机平台:Ubuntu 16.04 LTS(x64) 目标平台:ARM40-A5 Qt版本:Qt4.8.7 ARM GCC编译工具链: arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 ----------## Qt移植步骤 ## 1、了解Ubuntu&am…

C++_哈希

1. unordered系列关联式容器在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到$log_2 N$,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好 的查询是&#xf…

Redis 内存管理机制:深度解析与性能优化实践

🧠 Redis 内存管理机制:深度解析与性能优化实践 文章目录🧠 Redis 内存管理机制:深度解析与性能优化实践🧠 一、Redis 内存架构全景💡 Redis 内存组成结构📊 内存占用分布示例⚙️ 二、内存分配…

cargs: 一个轻量级跨平台命令行参数解析库

目录 1.简介 2.安装与集成 3.项目的目录结构及介绍 4.核心数据结构与函数 5.基本使用示例 6.应用案例和最佳实践 7.高级用法 8.与其他库的对比 9.总结 1.简介 cargs 是一个轻量级、无依赖的 C 语言命令行参数解析库,虽然本身是 C 库,但可以无缝…

【数学建模】质量消光系数在烟幕遮蔽效能建模中的核心作用

前言:欢迎各位光临本博客,这里小编带你直接手撕质量相关系数,文章并不复杂,愿诸君耐其心性,忘却杂尘,道有所长!!!! **🔥个人主页:IF’…

Java代码审计实战:XML外部实体注入(XXE)深度解析

Java代码审计实战:XML外部实体注入(XXE)深度解析XML外部实体注入(XXE)是Web应用程序中一种常见但又常常被忽视的漏洞。它利用了XML解析器解析XML文档时,允许引用外部实体这个特性。如果解析器没有禁用外部实…

当服务器出现网卡故障时如何检测网卡硬件故障并解决?

当服务器出现网卡故障时,可能导致网络通信中断,从而影响业务的正常运行。以下是检测网卡硬件故障、诊断问题并解决的详细方法和步骤。1. 网卡故障的常见表现1.1 硬件故障的常见症状网络无法连接:服务器无法访问外部网络或用户无法连接到服务器…

从车辆中心到用户中心:E/E架构的变革与挑战

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…