首页 > 其他分享 >numpy矩阵操作

numpy矩阵操作

时间:2024-09-28 13:03:28浏览次数:8  
标签:res 矩阵 vector np 操作 array numpy mean

numpy官方文档:https://numpy.org/doc/stable/

pip install numpy
import numpy as np

矩阵定义

$$
\left[
\begin{matrix}
1 & 2 \
3 & 4
\end{matrix}
\right]
$$

a = np.array([[1,2],[3,4]])

reshape

https://numpy.org/doc/stable/reference/generated/numpy.reshape.html

求行列式

np.linalg.det(a)

LINear ALGebra

矩阵拼接

竖直拼接用vstack:

res = np.zeros((0, 3)) # 0行3列的矩阵
res = np.vstack([res, [1, 2, 3]])
res = np.vstack([res, [4, 5, 6]])
res
array([[1., 2., 3.],
       [4., 5., 6.]])

水平拼接用hstack,语法跟上面的一样。

求均值

m = np.array([[1., 2., 3.], [4., 5., 6.]])
m.mean() # 整个矩阵所有值的平均数
m.mean(axis=0) # 将第0维干掉。实际上就是求每列的平均数
m.mean(axis=1) # 将第1维干掉。实际上就是求每行的平均数

要求标准差的话,把上面的mean换成std即可。

每隔n个元素求均值

import numpy as np
a = np.array([1, 4, 2, 3, 5, 6])
n = 2
a.reshape(-1, n).mean(axis=1)

如果长度不是n的倍数的话,只能这样:

def mean_every_n(a, n):
	split = len(a) - len(a) % n
	res = a[0:split].reshape(-1, n).mean(axis=1)
	if split != len(a):
		res = np.append(res, a[split:].mean())
	return res
mean_every_n(a, 4)

参考:https://www.geeksforgeeks.org/averaging-over-every-n-elements-of-a-numpy-array/#

每列除以某个向量

matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
vector = np.array([1, 2, 3])
# vector.shape == (3,),只有一个维度
# 加一个维度
column_vector = vector[:, np.newaxis]
# column_vector.shape == (3, 1)
# 这个时候做除法,numpy会自动对column_vector做broadcasting
matrix / column_vector
array([[1.        , 2.        , 3.        ],
       [2.        , 2.5       , 3.        ],
       [2.33333333, 2.66666667, 3.        ]])

参考文献

python中矩阵的用法
numpy创建矩阵常用方法
numpy.mean() 计算矩阵均值

标签:res,矩阵,vector,np,操作,array,numpy,mean
From: https://www.cnblogs.com/searchstar/p/18437348

相关文章

  • numpy学习笔记
    官方文档:https://numpy.org/doc/stable/numpy.array从pythonlist创建np.array([1,2,3])从多个pythonlist创建一维数组如果是确定数量的list,可以用np.concatenate:a=[1,2,3]b=[4,5,6]np.concatenate((a,b))输出:array([1,2,3,4,5,6])来源:https://stac......
  • 深入剖析 MyBatis-Plus:操作总结、对比与实践案例(CRUD 操作、分页、条件构造器、自动填
    MyBatis-Plus是MyBatis的增强工具,它极大简化了MyBatis的配置和操作,提高了开发效率。本文从基本操作到高阶用法,详细介绍了MyBatis-Plus的常见功能及与MyBatis的区别,并通过实际案例展示其强大的扩展能力。MyBatis-Plus基于MyBatis,但旨在减少开发者的代码量,增强可......
  • AIGC基础工具-科学计算和数据处理的重要库NumPy(Numerical Python)简介
    文章目录1.NumPy的核心概念1.1`ndarray`:多维数组对象示例代码2.NumPy的数据类型(`dtype`)示例代码3.NumPy的数组创建方法3.1使用`array()`创建数组3.2使用`zeros()`和`ones()`3.3使用`arange()`和`linspace()`3.4使用`random`模块生成随机数......
  • 卷积、激活、池化与批量归一化:深度学习中的关键操作
    在深度学习,尤其是卷积神经网络(CNN)中,卷积、激活、池化和批量归一化是四个基本操作。它们共同作用,帮助模型高效学习和提取数据中的重要特征。1.卷积操作作用卷积操作旨在通过滑动卷积核(过滤器)在输入数据上提取局部特征,如边缘和角点。过程滑动卷积核:卷积核在输入特征图上......
  • 代码随想录算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II 、区间和、开发
    209.长度最小的子数组此题注重理解,同时我将res一开始初始化为sums的长度加一(因为不可能为此长度)INT32_MAX是一个常量,代表32位有符号整数的最大值classSolution{public:intminSubArrayLen(inttarget,vector<int>&nums){inti=0,j=0;//i为起始位置,j为......
  • apk反编译修改教程系列-----修改apk 去除软件加固状态 实例操作步骤解析_2【二十八】
          今天继续以实例来演示去加固的步骤,app软件有加固就无法直接进行反编译修改操作。那么去加固就是修改软件的前提。作为初学的朋友,去加固后先测试app是都可以正常安装与打开。然后在进行对应的反编译修改操作。通过博文了解1------apk去加固的实例步骤演示......
  • 特殊矩阵范数在半定意义下(Lowner序)的最值性
    半定序我们知道对于任意两个实数\(a,b\),其必然满足以下三种关系中的一种\(a>b,或a=b,或者a<b\),这其实是一种全序关系,即任意两个实数之间都可以比较大小。但是若我们考虑矩阵的话,就不存在这种全序关系,但是我们可以刻画一种偏序关系,就如我们下文想要考察的半定关系,若矩阵\(......
  • 15 json常见操作与案例 序列化 反序列化
    json:本质是一个特定结构的字符串意义:打通不同编程语言之间进行相互通信时的数据格式问题。序列化(python数据类型转换成JSON格式化字符串)#python数据类型转换成JSON格式化字符串序列化importjson#python数据类型info={"code":1000,"message":"succes......
  • PowerShell 脚本禁用 Realtek Audio Console 中的前面板插孔检测,通常需要修改注册表项
     PowerShell脚本禁用RealtekAudioConsole中的前面板插孔检测,通常需要修改注册表项。以下是一个示例脚本,用于执行此操作:powershellCopyCode#设置注册表路径$registryPath="HKLM:\SOFTWARE\Realtek\Audio\RtkNGUI\Settings"#检查注册表路径是否存在if(-not(Test-......
  • JAVA连接HDFS操作
    JAVA连接HDFS操作一、引言在大数据时代,Hadoop分布式文件系统(HDFS)扮演着重要的角色。对于Java开发者来说,掌握如何使用Java连接和操作HDFS是一项基本技能。本文将介绍如何通过Java代码连接HDFS,并执行一些基本的文件操作。二、连接HDFS1、第一步:添加依赖要使用Java操作HDF......