python array矩阵相关操作

目录:

一、判断某个值是否在array二维数组的某列中

二、根据某列中的特定值筛选array数组

三、查找一个元素在二维 array 矩阵中的位置

四、判断array数组中的每个元素是否包含特定的子字符串

一、判断某个值是否在array二维数组的某列中

在 Python 中,如果你使用的是 numpy 数组,可以使用 numpy 提供的方法来判断某个值是否在数组的某一列中。这里有一个例子:

1、使用切片操作提取列(前提是 numpy 数组 array

假设你有一个 numpy 数组 array,并且你想判断某个值是否在该数组的某一列中。

 示例代码:

import numpy as np# 示例 2D 数组
array = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])# 要查找的值
value = 5# 指定列索引 (例如第二列,即索引为1)
column_index = 1# 判断值是否在指定的列中
if value in array[:, column_index]:print(f"{value} 在第 {column_index+1} 列中")
else:print(f"{value} 不在第 {column_index+1} 列中")

解释:

  1. array[:, column_index]切片操作,用于提取指定列的所有元素

    • : 表示选择所有行。
    • column_index 是你想查找的列的索引(从0开始)。
  2. 使用 in 关键字判断该值是否存在于该列中。

输出:

5 在第 2 列中

如果你没有使用 numpy 而是使用原生的 Python 列表,代码会稍有不同。

2、 使用 Python 原生列表(二维列表)示例:

# 示例 2D 列表
array = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]# 要查找的值
value = 5# 指定列索引 (例如第二列,即索引为1)
column_index = 1# 提取该列
column = [row[column_index] for row in array]# 判断值是否在指定的列中
if value in column:print(f"{value} 在第 {column_index+1} 列中")
else:print(f"{value} 不在第 {column_index+1} 列中")

 输出:

5 在第 2 列中

这种方法适用于 Python 原生的二维列表结构。

二、根据某列中的特定值筛选数组

1、是numpy的array数组

在 Python 中,如果你使用的是 numpy 数组,可以利用布尔索引来根据某列的值筛选数组

示例代码:

假设你有一个 numpy 数组 array,并且你想根据某列的值筛选数组中的行。

import numpy as np# 示例 2D 数组
array = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9],[4, 10, 11]])# 筛选条件:根据第二列的值筛选
column_index = 1
value = 5# 筛选出第二列等于5的所有行
filtered_array = array[array[:, column_index] == value]print(filtered_array)

解释:

  1. array[:, column_index] 提取数组的指定列(通过索引选择)。
  2. array[:, column_index] == value 会生成一个布尔数组,表示该列中哪些值等于 value
  3. 使用该布尔数组来索引原数组,返回符合条件的所有行。

输出: 

[[4 5 6]]

在这个例子中,输出为所有第二列值为 5 的行。

2、是python原生列表构成的二维数组

 如果你没有使用 numpy,而是使用原生的 Python 列表,可以使用类似的方法,通过列表推导式筛选。

# 示例 2D 列表
array = [[1, 2, 3],[4, 5, 6],[7, 8, 9],[4, 10, 11]]# 筛选条件:根据第二列的值筛选
column_index = 1
value = 5# 使用列表推导式筛选
filtered_array = [row for row in array if row[column_index] == value]print(filtered_array)

输出: 

[[4, 5, 6]]

 这种方法适用于原生 Python 列表结构。

三、查找一个元素在二维 array 矩阵中的位置 

假设你有一个二维矩阵 matrix,你要查找某个元素的位置。

方法 1: 使用 numpy 库

numpy 是一个高效的数值计算库,可以方便地进行数组操作。

import numpy as np# 创建一个二维数组
matrix = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])# 查找元素的索引
element = 5
result = np.where(matrix == element)# 输出位置 (返回的是元组形式)
print("元素的位置是:", result)

np.where(matrix == element) 会返回一个元组,表示符合条件的元素的行和列索引。

输出

元素的位置是: (array([1]), array([1]))

在这个例子中,5 出现在矩阵的第 2 行(索引 1)第 2 列(索引 1)。

方法 2: 使用列表推导式

如果你不想使用 numpy 库,可以使用纯 Python 的方法来查找元素的位置。

# 创建一个二维数组
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]# 查找元素的位置
element = 5
position = Nonefor i, row in enumerate(matrix):if element in row:position = (i, row.index(element))break# 输出位置
print("元素的位置是:", position)

输出: 

元素的位置是: (1, 1)

在这个例子中,5 位于矩阵的第 2 行(索引 1),第 2 列(索引 1)。

方法 3: 使用 for 循环

你也可以使用嵌套 for 循环来遍历矩阵,找到元素的位置。

# 创建一个二维数组
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]# 查找元素的位置
element = 5
position = Nonefor i in range(len(matrix)):for j in range(len(matrix[i])):if matrix[i][j] == element:position = (i, j)breakif position:break# 输出位置
print("元素的位置是:", position)

输出

元素的位置是: (1, 1)

总结

  • 如果你使用 numpy 库,np.where() 是一种非常简洁高效的方式。
  • 如果不使用外部库,可以通过嵌套 for 循环或者列表推导式来查找元素的位置。

 

四、判断array数组中的每个元素是否包含特定的子字符串 

示例:

import numpy as nporigin_array = np.array(["abc.", "def.", "abc.abc.", "ghi"])
elem = "abc"
judge_array = np.char.count(origin_array, elem + ".") != 0
print(judge_array)

输出:

[ True False  True False]

解释:

  • 第一个元素 "abc." 包含了 "abc.",所以为 True
  • 第二个元素 "def." 不包含 "abc.",所以为 False
  • 第三个元素 "abc.abc." 包含了 "abc.",所以为 True
  • 第四个元素 "ghi" 不包含 "abc.",所以为 False

逐步分析:

  1. origin_array: 假设它是一个 NumPy 数组,里面的每个元素可能是字符串类型(例如,形如 ["abc.", "def.", "ghi."])。
  2. elem: 假设这是一个字符串变量,它可能是任意的,如 "abc" 或 "def"
  3. elem + ".": 这表示将字符串 elem 和字符 "." 拼接起来,生成一个新的字符串。例如,如果 elem = "abc",那么 elem + "." 就是 "abc."
  4. np.char.count(origin_array, elem + ".")np.char.count 会返回一个数组,其中每个元素表示在 origin_array的相应位置中,子字符串 elem + "." 出现的次数。
    • 例如,如果 origin_array= ["abc.", "abc.abc.", "xyz."] 且 elem="abc",则 np.char.count 会返回一个数组 [1, 2, 0],因为 "abc." 在第一 个元素中出现一 次,在第二个元素中出现两次,而在第三个元素中没有出现。
  5. np.char.count(origin_array, elem + ".") != 0: 这一部分检查每个元素的出现次数是否不等于零。即,如果某个元素中包含了 elem + "."(即 abc. 或其他),它将返回 True,否则返回 False

最终效果:

judge_array 是一个布尔型数组,表示 origin_array中每个元素是否包含 elem + "." 这个子字符串。如果包含,则对应位置是 True,否则是 False

 

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

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

相关文章

Linux基础项目包含(DNS,FTP,Samba)

今天我们来实现一个linux的基础项目,多做项目可以加深我们对每个服务的掌握程度,能更加的熟悉各个服务的使用,以及每个服务之间如何相互应用,我们可以有一个清晰的认知,那么接下来我们就开始项目的实操。 一、 项目背…

鸿蒙面试 --- 性能优化

性能优化可以从三个方面入手 感知流畅、渲染性能、运行性能 感知流畅 在应用开发中,动画可以为用户界面增添生动、流畅的交互效果,提升用户对应用的好感度。然而,滥用动画也会导致应用性能下降,消耗过多的系统资源,…

UWB数字钥匙安全测距和场景应用

1. CCC数字钥匙 2021年7月CCC将UWB定义为第三代数字钥匙的核心技术,并发布CCC R3(第三代数字钥匙)规范。 CCC R3是基于NFC/BLE/UWB作为基础的无线电技术的使用,该系统采用非对称密码技术对车辆和设备进行相互签名认证&#xff0…

使用Compose Multiplatform开发跨平台的Android调试工具

背景 最近对CMP跨平台很感兴趣,为了练手,在移动端做了一个Android和IOS共享UI和逻辑代码的天气软件,简单适配了一下双端的深浅主题切换,网络状态监测,刷新调用振动器接口。 做了两年多车机Android开发,偶…

ubuntu22开机自动登陆和开机自动运行google浏览器自动打开网页

一、开机自动登陆 1、打开settings->点击Users 重启系统即可自动登陆桌面 二、开机自动运行google浏览器自动打开网页 1、安装google浏览器 sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i ./google-chrome-stable…

前端学习笔记之文件下载(1.0)

因为要用到这样一个场景,需要下载系统的使用教程,所以在前端项目中就提供了一个能够下载系统教程的一个按钮,供使用者进行下载。 所以就试着写一下这个功能,以一个demo的形式进行演示,在学习的过程中也发现了中文路径…

FPGA实现GTP光口视频转USB3.0传输,基于FT601+Aurora 8b/10b编解码架构,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案本博已有的FPGA驱动USB通信方案 3、工程详细设计方案工程设计原理框图输入Sensor之-->OV5640摄像头输入Sensor之-->芯片解码的…

借助nntools的模型训练(图像去噪任务, PyTorch)

在跑通开源代码的过程中,一直难以找到很合适的代码框架或代码模板,尤其对于初学者而言是不小的挑战。本人在跑代码的过程中,发现在GitHub上有一个辅助训练过程的模板。这篇文章主要记录它的使用方法,并标记来源。 代码均在jupyter…

C# 常量

文章目录 前言一、整数常量(一)合法与非法实例对比(二)不同进制及类型示例 二、浮点常量三、字符常量四、字符串常量五、定义常量 前言 在 C# 编程的世界里,常量是一类特殊的数据元素,它们如同程序中的 “定…

PHP 生成分享海报

因为用户端有多个平台,如果做分享海报生成,需要三端都来做,工作量比较大。 所以这个艰巨的任务就光荣的交给后端了。经过一定时间的研究和调试,最终圆满完成了任务,生成分享海报图片实现笔记如下。 目录 准备字体文件…

探索Python词云库WordCloud的奥秘

文章目录 探索Python词云库WordCloud的奥秘1. 背景介绍:为何选择WordCloud?2. WordCloud库简介3. 安装WordCloud库4. 简单函数使用方法5. 应用场景示例6. 常见Bug及解决方案7. 总结 探索Python词云库WordCloud的奥秘 1. 背景介绍:为何选择Wo…

git 学习笔记

目录 一、git 前期配置准备 1、托管平台的账号注册(以gitee码云为demo) 2、本地个人电脑配置 (1)配置用户属性 ​编辑 (2)配置SSH密钥 二、git 工作流程图 三、git 提交命令 (1&#x…

uniapp中使用uni-forms实现表单管理,验证表单

前言 uni-forms 是一个用于表单管理的组件。它提供了一种简化和统一的方式来处理表单数据,包括表单验证、字段绑定和提交逻辑等。使用 uni-forms可以方便地创建各种类型的表单,支持数据双向绑定,可以与其他组件及API进行良好的集成。开发者可…

_C#_串口助手_字符串拼接缺失问题(未知原理)

最近使用WPF开发串口助手时,遇到一个很奇怪的问题,无论是主线程、异步还是多线程,当串口接收速度达到0.016s一次以上,就会发生字符串缺失问题并且很卡。而0.016s就一切如常,仿佛0.015s与0.016s是天堑之隔。 同一份代码…

JVM(JAVA虚拟机)内存溢出导致内存不足,Java运行时环境无法继续

1、先贴出服务最后打印出来的日志,意思就是给虚拟机分配的内存被用完了,没有可用的内存了,服务运行不了了,被动停服了。详细的日志记录在了/home/user/zx/tomcat/apache-tomcat-8.5.82/bin/hs_err_pid147951.log文件里。 Java Ho…

OGRE 3D----3. OGRE绘制自定义模型

在使用OGRE进行开发时,绘制自定义模型是一个常见的需求。本文将介绍如何使用OGRE的ManualObject类来创建和绘制自定义模型。通过ManualObject,开发者可以直接定义顶点、法线、纹理坐标等,从而灵活地构建各种复杂的几何体。 Ogre::ManualObject 是 Ogre3D 引擎中的一个类,用…

Spring Boot英语知识网站:架构与开发

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

如何借助AI生成PPT,让创作轻松又高效

PPT是现代职场中不可或缺的表达工具,但同时也可能是令人抓狂的时间杀手。几页幻灯片的制作,常常需要花费数小时调整字体、配色与排版。AI的飞速发展为我们带来了革新——AI生成PPT的技术不仅让制作流程大大简化,还重新定义了效率与创意的关系…

Unity ShaderLab 实现网格爆炸

实现思路: 沿着3D物体每个面的法线,将面偏移一定的位置。 Shader Graph实现如下: Shader Lab 实现如下: Shader "Unlit/MeshExplode" {Properties{_MainTex ("Texture", 2D) "white" {}_Distan…

阅读《基于蒙特卡洛法的破片打击无人机易损性分析》_笔记

目录 基本信息 1 引言 1.1 主要研究内容 1.2 研究必要性(为什么要研究) 1.3 该领域研究现状(别人做了什么/怎么做的) 2 主要研究过程(我们做了什么) 2.1 建立目标仿真模型 2.2 确定毁伤依据 2.3 无…