比较python中的矩阵和复制值

时间:2016-05-03 09:10:43

标签: python numpy matrix copy compare

我有以下问题需要帮助。让我举个例子来描述我的问题:我有两个矩阵

wp=[[0, 0, 0, 0]    m_data=[[x0, 0, 0, 0] 
    [0, 0, 0, 1]            [x1, 0, 1, 0]
    [0, 0, 1, 0]            [x2, 0, 0, 1]
    [0, 0, 1, 1]            [x3, 1, 1, 1]
    [0, 1, 0, 0]            [x4, 1, 0, 1]
    [0, 1, 0, 1]            [x5, 1, 1, 0]
    [0, 1, 1, 0]            [x6, 0, 1, 1] 
    [0, 1, 1, 1]]           [x7, 1, 0, 0]]

我通过读取.csv文件获得第二个矩阵

my_data = numpy.genfromtxt('Untitled 1.csv', delimiter=','
my_data = numpy.matrix(my_data))

第一个矩阵将由

创建
wp = (numpy.arange(2**l)[:,None] >> numpy.arange(l)[::-1]) & 1
wp = numpy.hstack([wp.sum(1,keepdims=True), wp])
wp = numpy.c_[numpy.zeros(a**l), wp]
wp = wp[wp[:,2].argsort()]

矩阵的大小各不相同,但在我目前的问题中,我有8个0和0的空格。 1,因此大小为256 * 9。在示例中,我有0个空格用于0&因此,矩阵的尺寸为8 * 4。现在我想将第二个矩阵的第一列中的x值复制到第一个矩阵的第一列。但我想在正确的行中复制它。你知道一个简单的解决方案吗?我会很开心的。

1 个答案:

答案 0 :(得分:1)

根据Forzaa的建议,你可以做一些像

这样的事情
ix = np.lexsort((my_data[:,1], my_data[:,2], my_data[:,3]))
wp[:,0] = my_data[ix,0]

编辑:P.S。我可能误解了你的系统来生成wp,但它看起来很复杂。你能做点什么吗

wp = np.zeros((2**L, L+1))
wp[:,1:] = [[(i >> j) & 1 for j in range(L-1,-1,-1)] for i in range(2**L)]