3

这可能是存储在一些常见问题解答中的众所周知的问题,但我无法通过谷歌搜索解决方案。我正在尝试编写标量参数的标量函数,但允许使用 ndarray 参数。该函数应检查其参数的域正确性,因为域冲突可能会导致异常。这个例子展示了我试图做的事情:

import numpy as np
def f(x):
    x = np.asarray(x)
    y = np.zeros_like(x)
    y[x>0.0] = 1.0/x
    return y

print f(1.0)

在分配y[x>0.0]=...python 说0-d arrays can't be indexed。解决此执行的正确方法是什么?

4

2 回答 2

2

这将在 NumPy >= 1.9 中正常工作(在撰写本文时尚未发布)。在以前的版本中,您可以通过额外的np.asarray调用来解决:

x[np.asarray(x > 0)] = 0
于 2014-02-10T22:54:59.223 回答
1

你可以打电话f([1.0])代替吗?

否则你可以这样做:

x = np.asarray(x)
if x.ndim == 0:
    x = x[..., None]
于 2013-09-01T17:45:18.290 回答