繁体   English   中英

创建形式为[1,x,x ^ 2,…,x ^ n]的numpy数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM