如何使用Python 3获取二维或任意多维数组中的唯一值?
二维/多维数组的唯一值与重复值统计解决方案
你需要统计数组中出现一次的唯一值、出现多次的重复值,并输出重复值的出现次数,以下是基于你现有代码的完整实现:
完整代码(使用Numpy)
import numpy as np R = int(input("Enter the number of rows: ")) C = int(input("Enter the number of columns: ")) matrix = [] print("Enter the numbers:") for i in range(R): a =[] for j in range(C): a.append(int(input())) matrix.append(a) # 将多维数组扁平化 arr = np.array(matrix).flatten() # 统计每个元素的出现次数 values, counts = np.unique(arr, return_counts=True) # 筛选出现1次的唯一值和出现多次的重复值 distinct_values = [v for v, c in zip(values, counts) if c == 1] duplicated_pairs = [(v, c) for v, c in zip(values, counts) if c > 1] # 按要求格式输出结果 print("\nDistinct values inside array:", ", ".join(map(str, distinct_values))) print("\nDuplicated values inside array:", ", ".join(map(str, [v for v, _ in duplicated_pairs]))) for val, cnt in duplicated_pairs: print(f"{val} appeared {cnt} times")
代码说明
- 数组扁平化:用
np.array(matrix).flatten()把多维数组转换成一维数组,简化统计逻辑。 - 元素计数:
np.unique(arr, return_counts=True)返回两个数组——去重后的元素列表,以及每个元素对应的出现次数。 - 筛选分类:通过列表推导式分别筛选出出现1次的唯一值,以及出现多次的重复值(保留次数数据)。
- 格式输出:按照示例要求拼接字符串,输出分类后的结果和重复值的出现次数。
无Numpy替代方案(使用标准库)
如果不想依赖Numpy,可以用Python标准库的Counter实现:
from collections import Counter R = int(input("Enter the number of rows: ")) C = int(input("Enter the number of columns: ")) matrix = [] print("Enter the numbers:") for i in range(R): a =[] for j in range(C): a.append(int(input())) matrix.append(a) # 手动扁平化多维数组 flat_arr = [num for row in matrix for num in row] # 统计元素出现次数 counts = Counter(flat_arr) # 筛选分类 distinct_values = [v for v, c in counts.items() if c == 1] duplicated_pairs = [(v, c) for v, c in counts.items() if c > 1] # 输出结果 print("\nDistinct values inside array:", ", ".join(map(str, distinct_values))) print("\nDuplicated values inside array:", ", ".join(map(str, [v for v, _ in duplicated_pairs]))) for val, cnt in duplicated_pairs: print(f"{val} appeared {cnt} times")
内容的提问来源于stack exchange,提问作者bigstep
相关产品推荐
相关产品推荐

