【问题标题】:Compare matrices in python and copy values比较python中的矩阵并复制值
【发布时间】:2016-05-03 09:10:42
【问题描述】:

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

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()]

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

【问题讨论】:

  • 为什么不简单地复制你想要的 m_data 部分,包括 0 和 1? IE。 wp = m_data[:,:4]
  • 因为顺序不同,您也可以在示例中看到
  • 我不明白为什么 wp 必须按特定顺序排列,但如果有必要,请在 wp[:,1:] 上使用 np.lexsort 以获得按字典顺序排序的索引。
  • 我稍后使用张量,如果它的顺序不同,它会给我不同的结果

标签: python numpy matrix copy compare


【解决方案1】:

按照 Forzaa 的建议,您也许可以做类似的事情

ix = np.lexsort((my_data[:,1], my_data[:,2], my_data[:,3]))
wp[:,0] = my_data[ix,0]

编辑:附注我可能误解了你的系统来生成 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)]

【讨论】:

  • 谢谢,我试试看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多