【问题标题】:extract integer from an array in a certain interval在一定间隔内从数组中提取整数
【发布时间】:2021-03-15 02:08:17
【问题描述】:

我想以一定的间隔从数组中提取数字。该数组的大小为 (1,20)。我想以 4 的间隔打印这个数组中的数字。我试图从数组中打印从 0 到 20 的所有第 4 个数字。但我怀疑我的代码没有在 0 到 20 范围内打印正确的第 4 个数字。我正在尝试从 stimnumber 此处提取列号。 stimnumber 有一个形状 (1,20)

如果

stimnuber = [[1,1,1,1,4,4,4,4,8,8,8,8,9,9,9,9,0,0,0,0]]

我想打印所有数字 1、4、8、9 和 0。

j = 0
for j in range(stimnumber.shape[1]):
    while j < 5:
        stimnum = stimnumber[:,j::20]
        print(stimnum[:,j])
        j += 20

【问题讨论】:

  • 对于这样的问题,你应该考虑做一个其他人可以复制的小例子。你不需要 216576 个元素来解释这个问题。用特定的 20 个元素组成的数组询问问题,并且可能每 7 个元素进行一次。然后你可以准确地显示你想要的结果。由于这个问题尚不清楚——结果应该是什么形状?你总是从一个嵌套列表开始吗?等等
  • 我现在尝试编辑它的某些部分。是的,我在这里使用嵌套循环。谢谢
  • 看来你可以把它弄平然后切一片:stimnuber.flatten()[::4]
  • 列表没有shape 属性并且不支持扩展索引。它实际上是一个 Numpy 数组吗?

标签: python arrays loops


【解决方案1】:

只需 4 步迭代

stimnumber =[[1,1,1,1,4,4,4,4,8,8,8,8,9,9,9,9,0,0,0,0]]
for i in range(0,len(stimnumber[0]),4):
  print(stimnumber[0][i])

或者如 wjandrea 所指出的,如果您熟悉数组切片 (https://www.geeksforgeeks.org/python-list-comprehension-and-slicing/),您可以尝试:

stimnumber =[[1,1,1,1,4,4,4,4,8,8,8,8,9,9,9,9,0,0,0,0]]
for i in stimnumber[0][::4]: print(i)

基本上它意味着数组位置的[开始,停止,步骤]

【讨论】:

  • 使用切片更简单:for i in stimnumber[0][::4]: print(i)
  • 好点!我刚刚更新了答案以包括切片
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多