当前位置: 首页 > news >正文

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.mrgr.cn/news/78496.html

相关文章:

  • 深入解析下oracle date底层存储方式
  • 宠物领养平台构建:SpringBoot技术路线图
  • vue引入并调用electron插件在网页报错Dynamic require of “electron“ is not supported
  • 看板办公协同软件高效吗?解析与推荐
  • 速盾高防cdn支持移动端独立缓存
  • Android按键点击事件三种实现方法
  • 《操作系统 - 清华大学》6 -1:局部页面置换算法:最优页面置换算法
  • 针对Qwen-Agent框架的Function Call及ReAct的源码阅读与解析:Agent基类篇
  • Robot Framework框架中常用的变量
  • A052-基于SpringBoot的酒店管理系统
  • Flink 离线计算
  • ais_server 学习笔记
  • mongodb文档字符串批量替换
  • JAVA项目-------医院挂号系统
  • vue3 tinymce7版本 完美适配基本需求(特殊需求外)
  • 【JavaEE初阶 — 网络编程】TCP流套接字编程
  • 《Learn Three.js》学习(2)构建Three.js基本组件
  • nginx安装和负载均衡
  • JVM_总结详解
  • A050-基于spring boot物流管理系统设计与实现
  • ELK(Elasticsearch + logstash + kibana + Filebeat + Kafka + Zookeeper)日志分析系统
  • gitee:创建仓库,存入本地文件至仓库
  • 【uniapp】轮播图
  • Mysql实现定时自动备份(Windows环境)
  • 【STL】用一棵红黑树同时封装set和map
  • 在Java中使用Apache POI导入导出Excel(二)