【问题标题】:Array indexing in Numpy pythonNumpy python中的数组索引
【发布时间】:2011-12-02 16:24:00
【问题描述】:

如何在下一个代码片段中定义_SOME CODE_ 以获得如下所示的结果?

vector = numpy.array([a,b,c,d])
for i in xrange(4):
    print vector[_SOME CODE_ using i]

它会给我这些结果:

[a,b,c]
[a,c,d]
[a,b,d]
[b,c,d]

顺序并不重要。

【问题讨论】:

  • 预期的模式是什么?给一些向量分量加 1?
  • vector 不包含 3,因此仅通过索引无法获得所需的结果。

标签: python arrays indexing numpy


【解决方案1】:

已编辑问题的答案

>>> vector = numpy.array([0, 1, 2, 3])
>>> for i in xrange(4):
...     print numpy.r_[vector[:i], vector[i+1:]]
... 
[1 2 3]
[0 2 3]
[0 1 3]
[0 1 2]

原始问题的答案:这是一些产生所需输出的随机代码:

>>> import numpy
>>> vector = numpy.array([0,1,2])
>>> for i in xrange(4):
...     print vector + (vector >= i)
... 
[1 2 3]
[0 2 3]
[0 1 3]
[0 1 2]

我不知道这是否是您想要的——需求规范留下了一些解释空间。

【讨论】:

    【解决方案2】:

    我认为您正在尝试查找向量大小为 3 的所有组合。您可以像这样使用itertools.combinations 执行此操作:

    >>> import numpy
    >>> import itertools
    >>> vector = numpy.array([0, 1, 2, 3])
    >>> list(itertools.combinations(vector, 3))
    [(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2012-07-14
      • 2019-09-04
      相关资源
      最近更新 更多