【问题标题】:How to "extract" certain values out of an array?如何从数组中“提取”某些值?
【发布时间】:2013-09-03 10:44:36
【问题描述】:

假设我有一个数字数组:

a1 = np.arange(1,(30)+1)[:,None]        # or some other way og making (n,1) array

我想把每 4 个 nr 取出来并命名为别的,我会这样做:

a2 = aaa[0:30:2]

很好,但是我如何取出除上述数字之外的所有数字?换句话说:

   [[2.]
    [3.]
    [5.]
    [6.]
    [8.]
    [9.]....

我不知道该怎么做!

【问题讨论】:

  • "每 4 个 nr 取出并命名为其他名称" 您的意思是动态创建变量,从数组中分配值吗?我强烈建议避免这种情况,因为你做错了什么是一种非常强烈的设计气味。而不是问这个,你应该真正询问你想要使用该代码的上下文(参见XY problem)。
  • @Bakuriu 好的,可能是错误的提问方式。我是这种语言的新手。我想用问题中描述的 a1 的值创建一个数组(比如 a3)。那更好吗?

标签: python arrays sorting numpy


【解决方案1】:

创建一个布尔掩码并将其应用于您的数组:

>>> a2 = np.ones_like(a1)
>>> a2[::3] = 0
>>> a1[a2.astype(bool)]
array([ 2,  3,  5,  6,  8,  9, 11, 12, 14, 15, 17, 18, 20, 21, 23, 24, 26,
       27, 29, 30])

如果要提取其他元素,只需应用反布尔掩码即可:

>>> a1[~a2.astype(bool)]
array([ 1,  4,  7, 10, 13, 16, 19, 22, 25, 28])

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 2017-11-18
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2021-07-08
    • 2022-11-22
    • 2012-10-31
    • 1970-01-01
    相关资源
    最近更新 更多