np.triu详解

一、概述

在NumPy中,我们经常会使用np.triu函数来获取矩阵的上三角形部分。该函数的作用是返回一个数组的上三角形部分:

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.triu(a))

输出结果为:

array([[1, 2, 3],
       [0, 5, 6],
       [0, 0, 9]])

上三角形部分指的是矩阵中右上角的所有元素,包括对角线上的元素。

二、函数参数

np.triu函数最常用的参数为数组和k值,其中k值是一个整数型参数,用于指定矩阵上三角阵的对角线偏移量。对于k=0, np.triu返回矩阵的上三角形部分。对于k>0, 矩阵的对角线下面的k个元素会被保留;对于k<0, 对角线上面的|k|个元素会被保留。

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.triu(a, k=1))

输出结果为:

array([[0, 2, 3],
       [0, 0, 6],
       [0, 0, 0]])

我们指定k=1,即对角线下面的1个元素不会被保留。

三、应用实例

例1:构建方阵

使用np.triu构建一个3×3的方阵:

import numpy as np
a = np.array([1,2,3])
print(np.triu(np.tile(a, (3,1))))

输出结果为:

array([[1, 2, 3],
       [0, 2, 3],
       [0, 0, 3]])

这里我们使用np.tile()函数来将a向量平铺成3×3的矩阵,再使用np.triu函数获取其上三角部分。

例2:斐波那契矩阵

使用np.triu构建一个5×5的斐波那契矩阵:

import numpy as np
a = np.array([1,1,2,3,5])
b = np.triu(np.tile(a, (5,1)))
print(b.T+b)

输出结果为:

array([[ 2,  3,  4,  6, 11],
       [ 0,  2,  3,  5, 10],
       [ 0,  0,  4,  7, 12],
       [ 0,  0,  0,  6, 11],
       [ 0,  0,  0,  0, 10]])

该矩阵中每个元素都等于其所在行和所在列的斐波那契数之和。

四、总结

np.triu函数是NumPy中非常常用的一种矩阵操作函数,我们可以使用它来获取矩阵的上三角形部分。同时,该函数还有一些灵活的参数,可以对矩阵进行不同的截取处理。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/250811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-13 13:31
下一篇 2024-12-13 13:31

相关推荐

  • Python中的np.arange函数

    在本篇文章中,我们将着眼于Python中的np.arange函数。我们将从多个方面对这个函数进行全面解析,涵盖的内容包括介绍、功能、用法、案例以及注意事项等。如果您想深入了解np.…

    编程 2025-04-28
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25

发表回复

登录后才能评论