📜  Python – 矩阵行子集

📅  最后修改于: 2022-05-13 01:55:28.619000             🧑  作者: Mango

Python – 矩阵行子集

有时,在使用Python矩阵时,可能会遇到一个问题,即需要提取作为其他矩阵任何行的可能子集的所有行。这种问题可以在数据域中应用,因为矩阵是这些域中的关键数据类型。让我们讨论一些可以解决这个问题的方法。

方法 #1:使用any() + all() + 列表推导
上述功能的组合提供了解决此问题的方法。在此,我们使用 all() 检查行中所有元素的出现,而 any() 用于匹配矩阵的任何行。列表推导用于将逻辑绑定在一起。

# Python3 code to demonstrate working of 
# Matrix Row subset
# Using any() + all() + list comprehension
  
# initializing lists
test_list = [[4, 5, 7], [2, 3, 4], [9, 8, 0]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing check Matrix
check_matr = [[2, 3], [1, 2], [9, 0]]
  
# Matrix Row subset
# Using any() + all() + list comprehension
res = [ele for ele in check_matr if any(all(a in sub for a in ele)
                                           for sub in test_list)]
  
# printing result 
print("Matrix row subsets : " + str(res)) 
输出 :
The original list is : [[4, 5, 7], [2, 3, 4], [9, 8, 0]]
Matrix row subsets : [[2, 3], [9, 0]]

方法 #2:使用product() + set() + list comprehension
上述功能的组合可用于此任务。在此,我们使用 product() 和 set() 转换执行嵌套循环的任务是检查一个容器的子集。列表推导用于将所有内容绑定在一起。

# Python3 code to demonstrate working of 
# Matrix Row subset
# Using product() + set() + list comprehension
import itertools
  
# initializing lists
test_list = [[4, 5, 7], [2, 3, 4], [9, 8, 0]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing check Matrix
check_matr = [[2, 3], [1, 2], [9, 0]]
  
# Matrix Row subset
# Using product() + set() + list comprehension
res = [a for a, b in itertools.product(check_matr, test_list)
                                         if set(a) <= set(b)]
  
# printing result 
print("Matrix row subsets : " + str(res)) 
输出 :
The original list is : [[4, 5, 7], [2, 3, 4], [9, 8, 0]]
Matrix row subsets : [[2, 3], [9, 0]]