我有以下问题需要帮助。让我举个例子来描述我的问题:我有两个矩阵
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值复制到第一个矩阵的第一列。但我想在正确的行中复制它。你知道一个简单的解决方案吗?我会很开心的。
答案 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)]