1

许多不同的东西可以用作索引器numpy,在我的例子中,最常见的是整数列表和布尔表达式,但切片等也在桌面上。现在我有一个函数,它将索引表达式作为参数并使用预先计算的数组的相应元素。作为 MWE:

import numpy as np
def f(indexer):
    return f.M[:,indexer]
f.M = np.repeat([[1,2,3,4,5]],3,axis=0)
# now I can call f with different indexing expressions
f([1,4])
f(slice(0,None,2))
f([True, False, True, False, False])

现在我想在实际进行索引f(indexer) 之前计算出 的形状(我需要它来构造一些辅助数组)。对于一个列表,它是明确的(3, len(indexer)),对于一个布尔索引表达式,它是(3, np.nonzero(indexer))一个我什至不知道的切片,但是有没有一种(简单、快速、Pythonic、通用)方法可以让我f.M[:,indexer] 独立于哪种索引的大小我使用的表达方式?如果它不是一个通用的,那么也许至少有一个适用于布尔表达式和列表?

4

0 回答 0