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