【问题标题】:How to create this matrix in Python?如何在 Python 中创建这个矩阵?
【发布时间】:2019-03-23 20:30:53
【问题描述】:

我是 python 新手,一段时间以来一直在为如何编写这个矩阵而苦苦挣扎。

x'=[x1,x2,x3,x4,...,xN]

x 是上述矩阵的转置。

我想用值创建一个矩阵 y

x 需要作为 y 的输入,以便用户可以更改 x 和 k 的值。

def(x,k) 

如何继续用 Python 编写这个矩阵?

【问题讨论】:

  • 请不要使用指向外部图像的链接,而是在您的问题中输入它。最好使用可重现的示例。其次,x 是列表的列表,np.array 还是 np.matrix?

标签: python arrays numpy matrix


【解决方案1】:

使用可以使用以下功能。

def generate_poly_data(data,degree):
    first_row = np.ones((data.shape[0],1))

    poly_data = np.column_stack((first_row, data))
    for i in range(2,degree+1):
        poly_data = np.column_stack((poly_data,data**i))
    np.set_printoptions(suppress=True)
    return poly_data

【讨论】:

    【解决方案2】:

    这是编写函数的一种方法。让base_vector(你的 x)是一个 numpy 数组,让max_power(你的 k)是一个整数。

    import numpy as np
    
    def generate_poly_matrix(base_vector, max_power):
        poly_matrix = np.zeros((base_vector.size, max_power + 1))
        for (i, j), _ in np.ndenumerate(poly_matrix):
            poly_matrix[i, j] = base_vector[i]**j
        return poly_matrix
    

    这是另一种方式,使用不同的方法。非正式测试表明它们的运行时间相似。

    def generate_poly_matrix2(base_vector, max_power):
        base_matrix = np.tile(base_vector, (max_power+1, 1)).T
        powers = np.arange(0, max_power+1)
        return np.power(base_matrix, powers)
    

    【讨论】:

      【解决方案3】:

      您可以使用广播来避免显式平铺。 让base_vector(你的 x)是一个 numpy 数组,让max_power(你的 k)是一个整数,就像@Eric Miller 的回答一样。

      import numpy as np
      
      powers = np.range(max_power+1)
      result = base_vector[:, np.newaxis] ** powers[np.newaxis, :]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-22
        • 2016-02-08
        • 1970-01-01
        • 2019-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多