【问题标题】:Remove elements from numpy array smaller than 1从numpy数组中删除小于1的元素
【发布时间】:2021-08-21 17:06:00
【问题描述】:

我正在尝试绘制大数据(5000 万个值),但我得到了 MemoryError。现在我正试图从冗余值中清除我的数据集。就我而言,这些都是低于1 和高于-1 的值。要记住的一件事是,情节应该看起来与原版相同,但没有噪音。有比使用loopslist comprehensions 更好的方法吗?

原剧情:

编辑:

感谢您的回复。如果我使用建议的方法:

daty = daty[(-1 > daty) | (daty > 1)]

结果如下:

【问题讨论】:

  • 请分享一些示例数据或numpy.array 以重现问题

标签: python numpy matplotlib


【解决方案1】:

如果你的数组被命名为data:

clipped_data = data[(-1 > data) | (data > 1)]

【讨论】:

    【解决方案2】:

    Numpy 可以根据布尔数组进行寻址,所以如果你想将不需要的值设置为 0,你可以这样做:

    badIndices = (myArray > 1) | (myArray < -1)
    myArray[badIndices]=0
    

    【讨论】:

      【解决方案3】:

      Numpy 允许您将掩码应用于数组的任何单个维度,从而生成未掩码行的子集(或您的情况下的数据点)。

      data = np.array([1.5, 0.2, -5, -0.5])
      mask = np.abs(data) > 1
      data = data[mask]
      print(data) # output: [1.5, -5]
      

      请注意,-5 现在位于过滤器之后的位置 1。

      【讨论】:

        【解决方案4】:

        我在嵌入数组上使用的示例

        import numpy as np
        
        data = np.array([[0, 3], [2, 15], [15, 7], [3, 6]])
        e1 = (data[:, 0] < 15)
        e2 = (data[:, 1] < 15)
        
        print(data[e1 & e2])
        # array([[0, 3], [3, 6]])
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-16
          • 1970-01-01
          • 1970-01-01
          • 2021-12-06
          • 1970-01-01
          • 2019-11-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多