假設我有一個NumPy 1d-array a:
a = np.array([1, 2, 3] )
而我有一個函式foo:
def foo(x, p)。
...
return y
我想在a上應用foo,比如說,p從1到3,做成一個2d-array。
uj5u.com熱心網友回復:
或者只是:
>>> a[:, None] ** np. arange(1, 4)
array([[ 1, 1, 1],
[2, 4, 8] 。
[3, 9, 27] ], dtype=int32)
>>>
用一個函式:
def foo(x, p)。
return x ** p
np.apply_along_axis(lambda x: foo(x, np. arange(1, 4)), 1, a[:, None]
array([[ 1, 1, 1]。
[2, 4, 8] 。
[3, 9, 27] ], dtype=int32)
uj5u.com熱心網友回復:
在你的評論中你說你想給函式兩個引數為此你可以使用map和functools如下:
from functools import partial
a = np.array([1, 2, 3] )
def foo(x,y,z)。
return list(z ** y x)
list(map(partial(foo, z=a), range(1, 4), range(1,4) ) )
輸出:
[
[3, 4, 5], # [1,2,3] **1 1
[3, 6, 11], # [1,2,3]**2 2.
[3, 10, 29] # [1,2,3]**3 3]。
]
uj5u.com熱心網友回復:
首先,numpy模塊支持數學函式。因此,如果你想在陣列上應用數學函式,你只需要把它寫成普通函式或lambda函式,然后在陣列上應用它。 例如:
def foo(x,p)。
return numpy.power(x,p)
注意:在numpy模塊中還有很多數學函式。試著看一下它們:) .
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/326870.html
標籤:
