计算矩阵中不同列的数量

时间:2013-12-11 21:07:51

标签: python numpy

我有一些简单的代码,我只想计算两个矩阵的乘积中不同列的数量。代码是

import numpy as np
import itertools

n = 5
h = 2
M =  np.random.randint(2, size=(h,n))
F = np.matrix(list(itertools.product([0,1],repeat = 5))).transpose()
product = M*F
setofcols = set()
for column in product.T:
    setofcols.add(column)
print len(setofcols)

然而,这给出了错误的答案,因为setofcols的所有元素都是不同的,即使列是相同的。什么是正确的做法?

我将使用更大的n和h值来运行它,因此使用尽可能少的内存的解决方案将非常棒。

1 个答案:

答案 0 :(得分:2)

您可以使用repr

让您的工作
import numpy as np
import itertools

n = 5
h = 2
M =  np.random.randint(2, size=(h,n))
F = np.matrix(list(itertools.product([0,1],repeat = 5))).transpose()
product = M*F
setofcols = set()
for column in product.T:
    setofcols.add(repr(column))
print len(setofcols)
print setofcols

你也可以这样做:

setofcols={tuple(e.A1) for e in product.T}

矩阵的A1属性是1d基本数组,可用作tuple的序列。