python array矩阵相关操作

目录:

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

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

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

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

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

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

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

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

示例代码:

python 复制代码
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 关键字判断该值是否存在于该列中。

输出:

python 复制代码
5 在第 2 列中

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

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

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} 列中")

输出:

python 复制代码
5 在第 2 列中

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

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

1、是numpy的array数组

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

示例代码:

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

python 复制代码
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. 使用该布尔数组来索引原数组,返回符合条件的所有行。

输出:

python 复制代码
[[4 5 6]]

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

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

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

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)

输出:

python 复制代码
[[4, 5, 6]]

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

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

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

方法 1: 使用 numpy

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

python 复制代码
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) 会返回一个元组,表示符合条件的元素的行和列索引。

输出

python 复制代码
元素的位置是: (array([1]), array([1]))

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

方法 2: 使用列表推导式

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

python 复制代码
# 创建一个二维数组
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 查找元素的位置
element = 5
position = None

for i, row in enumerate(matrix):
    if element in row:
        position = (i, row.index(element))
        break

# 输出位置
print("元素的位置是:", position)

输出

python 复制代码
元素的位置是: (1, 1)

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

方法 3: 使用 for 循环

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

python 复制代码
# 创建一个二维数组
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 查找元素的位置
element = 5
position = None

for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        if matrix[i][j] == element:
            position = (i, j)
            break
    if position:
        break

# 输出位置
print("元素的位置是:", position)

输出

python 复制代码
元素的位置是: (1, 1)

总结

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

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

示例:

python 复制代码
import numpy as np

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

输出:

python 复制代码
[ 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

相关推荐
SoraLuna26 分钟前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
xlsw_31 分钟前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
梧桐树04291 小时前
python常用内建模块:collections
python
Dream_Snowar2 小时前
速通Python 第三节
开发语言·python
高山我梦口香糖2 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
信号处理学渣3 小时前
matlab画图,选择性显示legend标签
开发语言·matlab
红龙创客3 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
蓝天星空3 小时前
Python调用open ai接口
人工智能·python
jasmine s3 小时前
Pandas
开发语言·python
郭wes代码3 小时前
Cmd命令大全(万字详细版)
python·算法·小程序