【问题标题】:Matrices in Python which follow a trend and have alterable dimensionPython中跟随趋势且具有可变维度的矩阵
【发布时间】:2018-03-21 20:21:09
【问题描述】:

首先,我希望能够指定一个值 n,它会生成一个特定的 nxn 矩阵: 为此,我使用了代码:

n = __

np.eye (n)

这将产生指定维度的单位矩阵,n。 但是,我不想精确地创建单位矩阵。相反,我想创建 nxn 矩阵,其条目等于特定条目的列号。

我可以使用 np.eye(n) 作为基础来解决我的问题吗?

例如,如果我设置 n=3,我希望我的代码形成:

[1 , 2 , 3]
[1 , 2 , 3]
[1,  2 , 3]

谢谢

【问题讨论】:

  • 欢迎来到 SO。不幸的是,这不是一个讨论论坛或教程。请花时间阅读How to Ask 和该页面上的其他链接。
  • 也许你可以更善解人意。我的大学正在罢工,我没有被教到课程内容最丰富的部分。现在压力很大,我的工作没有让我知道我是否可以请假。
  • @wwii 请善待。考虑到有些人和你的位置不同。

标签: python arrays loops for-loop matrix


【解决方案1】:

有几种方法可以解决您的问题。既然你想使用np.eye,也许下面的解决方案会有所帮助。

import numpy as np

def matrix(n):
    x = np.eye(n)
    for i in range(n):
        x[i] = i + 1
    return x.T

def main():
    n=3
    print(matrix(n))


if __name__ == '__main__':
    main()

输出

[[ 1.  2.  3.]
 [ 1.  2.  3.]
 [ 1.  2.  3.]]

【讨论】:

  • 感谢您的回复。
  • 您能通过电子邮件帮助我解决类似的问题吗?如果没有这一点代码,我将无法完成项目中剩下的问题,这简直让我发疯。
【解决方案2】:

您可以使用 np.arange 生成行,然后使用以下符号重复它:

def matrix(n):
    row = np.arange(1,n+1)
    return np.array([row,]*n)

[row,] 符号添加了我们的额外维度,然后我们将其乘以 n 以获得新维度的大小。

我想我可以看到你使用 np.eye(n) 得到了什么,但我会使用 np.ones() 代替:

def matrix(n):
    row = np.arange(1,n+1)
    return np.ones((3,3))*row

因此,我们只是将自然数序列乘以 3x3 数组,以获得重复行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    相关资源
    最近更新 更多