【问题标题】:Slicing a Multidimensional NumPy Array with IF condition使用 IF 条件对多维 NumPy 数组进行切片
【发布时间】:2019-03-25 07:29:16
【问题描述】:

我是 python 新手,我正在尝试编写一个函数来对多维 numpy 数组进行切片。有几个要求:

  1. 如果 i 和 j 都不是 None 值,则返回数组 a 的元素,
  2. 如果 i 不是 None 值但 j 是 None,则返回数组 a 的第 i 行。
  3. 如果 j 不是 None 值但 i 是 None,则返回数组 a 的列 j。

-

def function(a,j,i):
    if i is not None and j is not None:
        return a
    elif i is not None and j is None:
        return a[i-1]
    elif i is None and j is not None:
        return a[:,j-1]

我现在正在执行此操作,但收到一条错误消息:ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()。我该如何解决这个问题?

【问题讨论】:

  • 我不认为这段代码是错误的来源(但它有问题)。发布整个代码,即您在哪里/如何使用function 函数。

标签: arrays python-3.x numpy slice


【解决方案1】:

它对我有用,但你可能可以这样做:

def function(a,j,i):
    return a[i, j] # None is treated as : in np, so no need to filter for it.

这会得到你想要的..

另外,你的逻辑有一个错误:

if i is not None and j is not None:
    return a

你是说

if i is None and j is None:
    return a

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多