我是python的新手,并且一直在努力如何编码此矩阵。
x'=[x1,x2,x3,x4,...,xN]
x是上述矩阵的转置。
我想创建一个具有值的矩阵y
x必须是y的输入,以便用户可以更改x和k的值。
def(x,k)
如何继续用Python编写此矩阵?
答案 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, :]