【问题标题】:Filtering an array into 3 separate arrays将一个数组过滤成 3 个单独的数组
【发布时间】:2021-07-08 20:01:14
【问题描述】:

我有一个非常大的数组,我试图在 python 中将它拆分为三个单独的数组,例如每个 i = 1+3(n-i)、i = 2 +3(n-1) 和 i%3== 0 被排序到三个不同的数组中。任何帮助将不胜感激。

for i in range(num_steps):
    xyz0 = np.array([1.0,1,1])
    xyz[] = fsolve(Neuro, xyz0, bvals)
    re[i] =xyz[1+3(i-1)]
    rp[i] = xyz[2+3(i-1)]
        for i%3 == 0
            rs[i] = xyz[i]

这段代码没有意义,但这是一个想法

【问题讨论】:

  • 你的代码在哪里?您是否尝试过使用if i%3==0: 之类的条件?
  • @not_speshal 那个我用过,但是另外两个我不知道该怎么做
  • 请从intro tour 重复on topichow to ask。 “告诉我如何解决这个编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后然后就您的算法或技术提出一个具体的问题。 Stack Overflow 无意取代现有的文档和教程。
  • if i%3==1 等怎么样?
  • I’m stuck,没有具体细节,也没有你的适用研究,是问题分析或规范导师的问题。对于 Stack Overflow,它不够专注。使用 %3 是直接的解决方案。

标签: python arrays sorting filter


【解决方案1】:

我们可以使用 Python 的扩展切片语法。调用l[n::3] 将返回l 的项目,从索引n 开始,每次都会越过3。以下是您要求的示例:

list = [1, 2, 3, 4, 5, 6, 7, 8]

first  = list[0::3]
middle = list[1::3]
last   = list[2::3]

打印这些可以得到所需的输出:

>>> print(first)
[1, 4, 7]
>>> print(middle)
[2, 5, 8]
>>> print(last)
[3, 6]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多