【问题标题】:Create double row diagonal matrix in numpy在numpy中创建双行对角矩阵
【发布时间】:2019-01-31 08:01:10
【问题描述】:

我正在尝试制作一个特殊的对角矩阵,如下所示:

[[1,1,0,0,0,0],
 [0,0,1,1,0,0],
 [0,0,0,0,1,1]]

与这里的问题略有不同:Make special diagonal matrix in Numpy

我尝试调整解决方案,但无法完全理解。 感谢有关如何有效实现这一目标的任何建议。

【问题讨论】:

  • np.repeat(np.eye(3, dtype=int), repeats=2, axis=1)
  • a = np.zeros((3, 6), dtype=int); j = np.arange(a.shape[1]); a[j // 2, j] = 1
  • 等等。 . . :)
  • 太棒了!请添加它作为答案,我会接受它。谢谢!

标签: python numpy diagonal


【解决方案1】:

不像 cmets 那样优雅,但是:

a=4 # number of rows
b=a*2 #number of columns
np.array((([1]*2+[0]*b)*a)[:-b]).reshape(a,b)
array([[1, 1, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 0, 0, 0, 0],
       [0, 0, 0, 0, 1, 1, 0, 0],
       [0, 0, 0, 0, 0, 0, 1, 1]])

适用于任何a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多