【问题标题】:Retrieve column slices from a NumPy array using variables as the indexer使用变量作为索引器从 NumPy 数组中检索列切片
【发布时间】:2018-03-02 18:43:06
【问题描述】:

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

extracted_columns = array[:,a]. 

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

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

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

extracted_columns = array[:,:]

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

有什么好的方法吗?

谢谢,

【问题讨论】:

  • a = slice(None)
  • 为了以后参考,那些“两个点”被称为“冒号”

标签: python arrays numpy slice


【解决方案1】:

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))

【讨论】:

  • 仅供参考:A:B == slice(A, B)A:B:C == slice(A, B, C) 其中 A、B 在 slice 中留空意味着 None
  • 正是我要找的,我不知道类型切片。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
相关资源
最近更新 更多