如何在Python中创建此矩阵?

时间:2018-10-18 23:48:36

标签: python arrays numpy matrix

我是python的新手,并且一直在努力如何编码此矩阵。

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

x是上述矩阵的转置。

我想创建一个具有值的矩阵y

shown here

x必须是y的输入,以便用户可以更改x和k的值。

def(x,k) 

如何继续用Python编写此矩阵?

3 个答案:

答案 0 :(得分:0)

使用可以使用以下功能。

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

答案 1 :(得分:0)

这是编写函数的一种方法。令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)

答案 2 :(得分:0)

您可以使用广播来避免显式平铺。 让 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, :]