【问题标题】:Loop for Subtracting within Array Elements循环用于数组元素内的减法
【发布时间】:2023-03-13 18:38:02
【问题描述】:

我是使用 Python 和 Numpy 的新手。 我认为这很简单,可能是。 我有很多次。
例如:

times = (0.5,  0.75,  1.5)

此数组的大小将根据加载的文件而有所不同。

我只是想找出每个后续元素之间的时间差。

0.75 - 0.5
then
1.5 - 0.75

数组中元素的数量也是如此。 然后我将每个结果放在一列中。

我尝试了各种 for 循环,但无法做到。一定有简单的方法吧?

谢谢, 斯科特

【问题讨论】:

  • 那么,您尝试过什么?顺便说一句,这是一个常见的问题。在此处或在 Google 上搜索。
  • 感谢 Marcin,我在网上查看或尝试的所有内容都没有回答这个案例(我猜是搜索不好)。我遇到的麻烦是独立的。元素在数组上相互计算。一切都是关于一个元素,而不是两个。您的链接非常有帮助,这里的其他建议也是如此。谢谢!

标签: python for-loop numpy


【解决方案1】:

这个怎么样?

>>> import numpy as np
>>> a = np.array([0.5,  0.75,  1.5])
>>> np.diff(a)
array([ 0.25,  0.75])
>>> 

【讨论】:

    【解决方案2】:

    首先,请注意,对于大多数日常使用,您可能不需要数组(这是 Numpy 中的一种特殊数据类型)。 Python 的主要数据存储方式就是列表,如果您来自更严格的编程语言,那么绝对值得一读。列表实际上是使用方括号定义的:

    times = [ 0.5,  0.75,  1.5 ]
    

    然后,使用称为列表推导的特殊语法,我们可以创建一个包含 (length-1) 个元素的新列表。这个表达式会自动计算出所需列表的大小。

    diffs = [ times[i] - times[i-1] for i in range(1, len(times)) ]
    

    对于提供的样本数据,返回:

    [0.25, 0.75]
    

    【讨论】:

      【解决方案3】:

      或者这些(同一主题的所有变体)怎么样:

      import numpy as np
      a = np.array([0.5,  0.75,  1.5])
      b = a[1:]-a[:-1]
      print (b)
      

      或者没有 numpy:

      a=[0.5,  0.75,  1.5]
      a1=a[1:]
      a2=a[:-1]
      b=[ aa-a2[i] for i,aa in enumerate(a1) ]
      

      a=[0.5,  0.75,  1.5]
      c=[x-y for x,y in zip(a[1:],a[:-1])]
      

      【讨论】:

        【解决方案4】:
        diffs = [b-a for a, b in zip(times[:-1], times[1:])]
        [0.25, 0.75]
        

        这种方法不需要 numpy 简单的 Python。减法

        times[1:]
        (0.75, 1.5)
        
        times[:-1]
        (0.5, 0.75)
        

        彼此

        【讨论】:

          【解决方案5】:

          应该这样做。

          import numpy as np
          
          
          times = np.array([0.5,0.75,1.5,2.0])
          diff_times = np.zeros(len(times)-1,dtype =float)
          
          for i in range(1,len(times)):
              diff_times[i-1] = times[i] - times[i-1]
          
          print diff_times
          

          【讨论】:

            【解决方案6】:

            非常基础:

            liste = [1,3,8]
            difference = []
            for i in range(len(liste)-1):
                diffs = abs(liste[i] - liste[i+1])
                difference.append(diffs)
            
            print difference
            

            【讨论】:

              猜你喜欢
              • 2020-08-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-12-29
              • 1970-01-01
              • 2019-03-31
              • 2019-08-27
              • 1970-01-01
              相关资源
              最近更新 更多