小编pro*_*ius的帖子

在返回向量的函数上使用Numpy Vectorize

numpy.vectorize 取函数f:a-> b并将其变为g:a [] - > b [].

这在标量ab标量时都可以正常工作,但是我想不出为什么它不能用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)

python arrays numpy vectorization

31
推荐指数
3
解决办法
4万
查看次数

标签 统计

arrays ×1

numpy ×1

python ×1

vectorization ×1