使用变量作为索引器

时间:2017-09-21 12:05:15

标签: python arrays numpy slice

假设我有一个数组,我想要一个函数根据预定义的参数a选择一些列:

extracted_columns = array[:,a]. 

如果我有例如a = np.arange(10),我将获得前十列,

如果我想定义一个以便在不知道数组大小的情况下选择所有列,该怎么办?

我想设置a = :以便函数执行

extracted_columns = array[:,:]

但似乎:不能作为参数传递。我还尝试了a = None,但这给了我一个维度3的数组,其中第二维等于1

有一种很好的方法吗?

谢谢,

1 个答案:

答案 0 :(得分:2)

slice对象传递给您的函数。

MCVE:

x = np.arange(9).reshape(3, 3)

print(x)
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

a = slice(None)

print(x[:, a])
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

对于您的情况,您可以按以下方式定义一个功能:

def foo(array, a):
    return array[:, a]

并称之为:

arr_slice = foo(array, slice(None))