使用来自具有numpy的元组的值创建矩阵

时间:2017-11-12 15:49:54

标签: python python-2.7 numpy matrix

我正在尝试创建一个矩阵,其值基于我存储在元组中的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

1 个答案:

答案 0 :(得分:2)

使用x2D的数组版本扩展为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