【问题标题】:How to select arrays with different lengths from a "parental" array?如何从“父”数组中选择不同长度的数组?
【发布时间】:2020-04-27 15:10:40
【问题描述】:

我是 Python 新手。我有一个 float64 数组,对称分布在零附近 (e.g. [-3, -2, -1, 0, 1, 2, 3]);

然后,我需要选择在该数组(e.g. 1st array_range [-3, -2, -1, 0, 1, 2, 3]、第二个array_range [ -2, -1, 0, 1, 2]、第三个array_range [-1, 0, 1]) 中围绕零对称分布的不同数组来计算曲线下的增加面积(例如x1= [-3, -2, -1, 0, 1, 2, 3]y1= [10, 30, 60, 100, 70, 55, 20];@ 987654327@和y2= [10, 40, 100, 60, 40, 20]等等..

有没有人知道 Python 中是否有特定的代码可以做到这一点?

谢谢

【问题讨论】:

  • 到目前为止你尝试过什么?你做过基础的 Python 教程吗?您熟悉索引和切片吗?您的数据实际上是“float64 数组”(即来自arraynumpy)还是只是如图所示的整数列表?
  • 不能只使用 Python 的范围吗? range(-3, 4)(其中 te "4" 代表 3 + 1)。

标签: python arrays indexing range


【解决方案1】:

您可以使用切片在每次迭代时从原始数组的前后截断一个元素。

data = [-3, -2, -1, 0, 1, 2, 3]
for i in range(len(data)//2):
    sub = data[i:len(data)-i]
    print(sub)

输出

[-3, -2, -1, 0, 1, 2, 3]
[-2, -1, 0, 1, 2]
[-1, 0, 1]

【讨论】:

  • 使用[i:-i]即可,无需每次都取len(data)
  • @MisterMiyagi 这将适用于除第一次迭代 (i == 0) 之外的所有迭代,因为 [0:-0] 将返回一个空列表
  • 您知道模式len(data)-i] 在Python 中是冗余的,对吧?您可以只使用负索引从末尾开始计数 - 您的行将是 sub = data[i:-i]
  • @jsbueno 阅读您上面的评论。
  • 无论如何,这个答案是多余的。 OP 可以只使用“范围”。在索引中使用“len(x) - i”仍然是一种反模式。
猜你喜欢
  • 2018-04-05
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多