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

时间:2017-06-23 13:25:04

标签: python numpy

对于值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函数。

2 个答案:

答案 0 :(得分:2)

如果您拥有变量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)

答案 1 :(得分:2)

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。)