![](/img/trans.png)
[英]Create a n x m array of polynomials using a (n x 1) data through Numpy/Pandas
[英]Create a numpy array of the form [1,x,x^2,…,x^n]
对于值x,我想创建一个[1,x,x ^ 2,x ^ 3,...,x ^ n]形式的numpy数组。 我找到了函数numpy.fromfunction
,但是我无法正常工作。 我尝试了以下方法:
np.fromfunction(lambda i: np.power(x,i), 10, dtype=int)
有人可以解释为什么这行不通以及我该怎么做吗? 我知道我可以使用for循环来做到这一点,但是我更喜欢使用numpy函数。
如果您有变量x
那么您就可以
>>> x = 3
>>> np.power(x, np.arange(10))
array([ 1, 3, 9, 27, 81, 243, 729, 2187, 6561, 19683], dtype=int32)
如果要将x
用作矩阵,只需确保尺寸兼容即可,例如
>>> x = np.array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3],
[4, 4, 4]])
>>> np.power(x, np.arange(3))
array([[ 1, 1, 1],
[ 1, 2, 4],
[ 1, 3, 9],
[ 1, 4, 16]], dtype=int32)
CoryKramer答案可能是获得所需结果的最佳方法,但是如果您想使当前方法适应该问题,则下面的代码将起作用:
np.fromfunction(lambda _, i: np.power(x,i), (1, 10), dtype=int)
对于x = 3
,将产生:
[ 1, 3, 9, 27, 81, 243, 729, 2187, 6561, 19683]
这是因为您为数组形状提供的值是10
,而不是可迭代的。 然后,lambda函数必须接受两个值,因此使用_
来收集第一个值(对于形状为(1, 10)
的数组,该值始终为0)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.