【问题标题】:How to index 0-d array in Python?如何在 Python 中索引 0-d 数组?
【发布时间】:2013-09-01 17:28:15
【问题描述】:

这可能是一些常见问题解答中存储的众所周知的问题,但我无法通过谷歌搜索解决方案。我正在尝试编写标量参数的标量函数,但允许使用 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。 解决此执行的正确方法是什么?

【问题讨论】:

  • 棘手;)。使用y[np.asarray(x>0.0)] = ... 应该可以解决问题。
  • 谢谢你!我不知道为什么,但它有效!
  • @seberg 请考虑发布您的建议作为答案

标签: python numpy


【解决方案1】:

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

x[np.asarray(x > 0)] = 0

【讨论】:

    【解决方案2】:

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

    否则你可以这样做:

    x = np.asarray(x)
    if x.ndim == 0:
        x = x[..., None]
    

    【讨论】:

    • 不是我叫它,而是 scipy.integration.quad 叫它。无论如何,seberg 成功了。
    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    相关资源
    最近更新 更多