我正在尝试创建一个矩阵,其值基于我存储在元组中的x,y
值。我使用循环来迭代元组并对数据执行简单的计算:
import numpy as np
# Trying to fit quadratic equation to the measured dots
N = 6
num_of_params = 3
# x values
x = (1,4,3,5,2,6)
# y values
y = (3.96, 24.96,14.15,39.8,7.07,59.4)
# X is a matrix N * 3 with the x values to the power of {0,1,2}
X = np.zeros((N,3))
Y = np.zeros((N,1))
print X,"\n\n",Y
for i in range(len(x)):
for p in range(num_of_params):
X[i][p] = x[i]**(num_of_params - p - 1)
Y[i] = y[i]
print "\n\n"
print X,"\n\n",Y
这可以通过更简单的方式实现吗?我正在寻找一些方法来初始化矩阵,如X = np.zeros((N,3), read_values_from = x)
有可能吗?还有另一种简单的方法吗?
Python 2.7
答案 0 :(得分:2)
使用x
将2D
的数组版本扩展为np.newaxis/None
,其中单个dim(dim,长度= 1)沿着第二个使用2D
。这使我们可以利用NumPy broadcasting
以矢量化方式获取y
输出。 X = np.asarray(x)[:,None]**(num_of_params - np.arange(num_of_params) - 1)
Y = np.asarray(y)[:,None]
的类似哲学。
因此,实施将是 -
np.power
或者使用X
的内置外部方法来获取负责数组转换的X = np.power.outer(x, num_of_params - np.arange(num_of_params) - 1)
-
Y
或者,对于np.expand_dims
,请使用Y = np.expand_dims(y,1)
-
assert