Python中的矩阵遵循趋势并具有可变维度

时间:2018-03-21 20:21:09

标签: python arrays loops for-loop matrix

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

n = __

np.eye (n)

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

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

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

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

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用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数组,以得到重复的行。

答案 1 :(得分:0)

有几种方法可以解决您的问题。由于您想使用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.]]