You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提取矩阵中由相同行组成的子矩阵的实现方法

提取矩阵中由相同行组成的子矩阵的实现方法

嘿,我来帮你搞定这个问题~你现在的需求是把矩阵里所有相同的行归到一起,生成对应的子矩阵,但之前的嵌套循环只能两两匹配,没法把所有重复行都整合到同一个子矩阵里,而且还会出现重复输出的情况对吧?

下面给你两种实用的实现方法,都是基于NumPy的,能完美解决这个问题:

方法一:用字典分组(直观易懂)

我们可以把每一行转换成不可变的元组作为字典的键,然后把相同行都添加到对应键的列表里,最后再把每个列表转换成NumPy矩阵就行:

import numpy as np

A = np.array([
    [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
    [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
    [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
    [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
    [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
    [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
    [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.]
])

# 初始化字典用来分组
row_groups = {}
for row in A:
    # 把行转成元组作为键(数组不能当字典键)
    row_key = tuple(row)
    if row_key not in row_groups:
        row_groups[row_key] = []
    row_groups[row_key].append(row)

# 把每个分组转成NumPy矩阵
sub_matrices = [np.vstack(group) for group in row_groups.values()]

# 输出结果
print("子矩阵B:")
print(sub_matrices[0])
print("\n子矩阵C:")
print(sub_matrices[1])

方法二:用NumPy的unique函数(更简洁)

利用np.unique找到所有唯一行,再通过np.where定位每个唯一行在原矩阵中的位置,最后提取对应的行组成子矩阵:

import numpy as np

A = np.array([
    [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
    [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
    [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
    [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
    [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
    [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
    [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.]
])

# 获取唯一行以及每个行对应的索引标签
unique_rows, labels = np.unique(A, axis=0, return_inverse=True)

# 按标签分组提取子矩阵
sub_matrices = []
for unique_row in unique_rows:
    # 找到所有和当前唯一行匹配的行索引
    indices = np.where(labels == np.where((unique_rows == unique_row).all(axis=1))[0][0])[0]
    sub_matrix = A[indices]
    sub_matrices.append(sub_matrix)

# 输出结果
print("子矩阵B:")
print(sub_matrices[0])
print("\n子矩阵C:")
print(sub_matrices[1])

这两种方法都能自动识别所有重复行的分组,不管原矩阵多大、有多少种重复行,都能准确提取对应的子矩阵~

备注:内容来源于stack exchange,提问作者Ludovica Spada Chiodo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:38:15