numpy.vectorize
取函数f:a-> b并将其变为g:a [] - > b [].
这在标量a
和b
标量时都可以正常工作,但是我想不出为什么它不能用b作为ndarray
或列表,即f:a-> b []和g:a [] - > b [] []
例如:
import numpy as np
def f(x):
return x * np.array([1,1,1,1,1], dtype=np.float32)
g = np.vectorize(f, otypes=[np.ndarray])
a = np.arange(4)
print(g(a))
Run Code Online (Sandbox Code Playgroud)
这会产生:
array([[ 0. 0. 0. 0. 0.],
[ 1. 1. 1. 1. 1.],
[ 2. 2. 2. 2. 2.],
[ 3. 3. 3. 3. 3.]], dtype=object)
Run Code Online (Sandbox Code Playgroud)
好的,所以给出了正确的值,但错误的dtype.更糟糕的是:
g(a).shape
Run Code Online (Sandbox Code Playgroud)
收益率:
(4,)
Run Code Online (Sandbox Code Playgroud)
所以这个阵列几乎没用.我知道我可以将其转换为:
np.array(map(list, a), dtype=np.float32)
Run Code Online (Sandbox Code Playgroud)
给我我想要的东西:
array([[ 0., …
Run Code Online (Sandbox Code Playgroud)