我正在尝试创建一个矩阵,其值基于 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
最佳答案
x
的扩展数组版本至2D
沿着第二个使用 np.newaxis/None
的单例暗淡(长度=1 的暗淡) 。这让我们可以利用 NumPy broadcasting
获取 2D
以矢量化方式输出。 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)
关于python - 使用 numpy 元组中的值创建矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250754/