NumPy数组排序、过滤与随机数生成详解

原创
ithorizon 9个月前 (07-01) 阅读数 150 #Python
目录
  • NumPy 数组排序
    • 排序数组
    • 排序二维数组
    • 练习
    • NumPy 数组过滤
    • 过滤数组
    • 创建过滤数组
    • 直接从数组创建过滤
    • 练习
  • NumPy 中的随机数
    • 什么是随机数?
    • NumPy 中的随机数生成
    • 生成随机整数
    • 生成随机浮点数
    • 从数组中生成随机数
    • 生成指定分布的随机数
    • 练习
  • 解决方案
    • 最后

      NumPy 数组排序

      排序数组

      排序数组意味着将元素按特定顺序排列。顺序可以是数字大小、字母顺序、升序或降序等。

      NumPy 的 ndarray 对象提供了一个名为 sort() 的函数,用于对数组进行排序。

      示例:

      import numpy as np
      
      arr = np.array([3, 2, 0, 1])
      
      print(np.sort(arr))
      

      输出:

      [0 1 2 3]

      注意:

      sort() 方法会返回数组的副本,原始数组不会被修改。 可以对字符串数组、布尔数组等其他数据类型进行排序。

      排序二维数组

      对于二维数组,sort() 方法会对每一行进行排序。

      示例:

      import numpy as np
      
      arr = np.array([[3, 2, 4], [5, 0, 1]])
      
      print(np.sort(arr))
      

      输出:

      [[0 1 2]
      [3 4 5]]

      练习

      使用 NumPy 正确的方法对以下数组进行排序:

      arr = np.array([3, 2, 0, 1])
      
      x = np.sort(
          # 请在此处填写代码
      )
      
      print(x)
      

      解答:

      x = np.sort(arr)
      

      NumPy 数组过滤

      过滤数组

      过滤数组是指从现有数组中选取部分元素,并创建新的数组。

      在 NumPy 中,可以使用布尔索引列表来过滤数组。布尔索引列表是一个与数组索引相对应的布尔值列表。

      如果索引处的值为 True,则该元素会被包含在过滤后的数组中;如果为 False,则会被排除。

      示例:

      import numpy as np
      
      arr = np.array([41, 42, 43, 44])
      
      x = [True, False, True, False]
      
      newarr = arr[x]
      
      print(newarr)
      

      输出:

      [41 43]

      解释:

      新数组 newarr 只包含 arr 中索引为 0 和 2 的元素,基于 x 对应索引处的值为 True

      创建过滤数组

      通常情况下,我们需要通过条件来创建过滤数组。

      示例:

      仅返回大于 42 的元素:

      import numpy as np
      
      arr = np.array([41, 42, 43, 44])
      
      filter_arr = arr > 42
      
      newarr = arr[filter_arr]
      
      print(filter_arr)
      print(newarr)
      

      输出:

      [False  True  True  True]
      [43 44]

      仅返回偶数元素:

      import numpy as np
      
      arr = np.array([1, 2, 3, 4, 5, 6, 7])
      
      filter_arr = arr % 2 == 0
      
      newarr = arr[filter_arr]
      
      print(filter_arr)
      print(newarr)
      

      输出:

      [False  True  False  True  False  True  False]
      [2 4 6]

      直接从数组创建过滤

      NumPy 提供了一种更简洁的方案来创建过滤数组,即直接在条件中使用数组:

      示例:

      仅返回大于 42 的元素:

      import numpy as np
      
      arr = np.array([41, 42, 43, 44])
      
      newarr = arr[arr > 42]
      
      print(newarr)
      

      输出:

      [43 44]

      仅返回偶数元素:

      import numpy as np
      
      arr = np.array([1, 2, 3, 4, 5, 6, 7])
      
      newarr = arr[arr % 2 == 0]
      
      print(newarr)
      

      输出:

      [2 4 6]

      练习

      使用 NumPy 的直接过滤方法,从以下数组中过滤出所有平方为偶数的元素:

      import numpy as np
      
      arr = np.
      

      NumPy 中的随机数

      什么是随机数?

      随机数是指无法通过确定性方法预测其值的数据。通常情况下,随机数是指在一定范围内均匀分布的数字。

      在计算机中,由于程序的确定性,不也许生成真正的随机数。由此,通常使用伪随机数来代替随机数。伪随机数是通过算法生成的,但看起来像随机数。

      NumPy 中的随机数生成

      NumPy 提供了 random 模块用于生成随机数。该模块提供了多种方法,可以生成不同类型和分布的随机数。

      生成随机整数

      randint(low, high, size):生成指定范围内的随机整数。 low:下限,默认为 0。 high:上限,不包括上限本身。 size:输出数组的形状。

      示例:

      import numpy as np
      
      # 生成 10 个介于 0 和 100 之间的随机整数
      x = np.random.randint(0, 101, size=10)
      print(x)
      

      生成随机浮点数

      rand(size):生成介于 0 和 1 之间的随机浮点数。 size:输出数组的形状。

      示例:

      import numpy as np
      
      # 生成 5 个随机浮点数
      x = np.random.rand(5)
      print(x)
      

      从数组中生成随机数

      choice(a, size, replace):从数组 a 中随机选择元素。 a:源数组。 size:输出数组的形状。 replace:是否允许重复选择元素,默认为 False

      示例:

      import numpy as np
      
      # 从数组 [1, 2, 3, 4, 5] 中随机选择 3 个元素
      x = np.random.choice([1, 2, 3, 4, 5], size=3)
      print(x)
      

      生成指定分布的随机数

      NumPy 还提供了其他方法来生成特定分布的随机数,例如正态分布、均匀分布、指数分布等。

      randn(size):生成服从标准正态分布的随机数。 randm(size):生成服从均匀分布的随机整数。 beta(a, b, size):生成服从 Beta 分布的随机数。 gamma(shape, scale, size):生成服从 Gamma 分布的随机数。 poisson(lam, size):生成服从泊松分布的随机整数。

      例如,生成 10 个服从标准正态分布的随机数:

      import numpy as np
      
      x = np.random.randn(10)
      print(x)
      

      练习

      • 使用 randint 方法生成一个包含 20 个介于 100 到 200 之间的随机整数的数组。
      • 使用 rand 方法生成一个包含 15 个介于 0 和 1 之间的随机浮点数的数组。
      • 从数组 [1, 3, 5, 7, 9] 中随机选择 10 个元素,并允许重复。
      • 生成 5 个服从标准正态分布的随机数。

      解决方案

      import numpy as np
      
      # 1. 使用 randint 方法生成随机整数数组
      random_ints = np.random.randint(100, 201, size=20)
      print(random_ints)
      
      # 2. 使用 rand 方法生成随机浮点数数组
      random_floats = np.random.rand(15)
      print(random_floats)
      
      # 3. 从数组中随机选择元素
      random_elements = np.random.choice([1, 3, 5, 7, 9], size=10, replace=True)
      print(random_elements)
      
      # 4. 生成服从标准正态分布的随机数
      normal_randoms = np.random.randn(5)
      print(normal_randoms)
      

      最后

      以上就是NumPy数组排序、过滤与随机数生成详解的详细内容,更多涉及NumPy数组排序过滤及生成的资料请关注IT视界其它相关文章!


      本文由IT视界版权所有,禁止未经同意的情况下转发

      文章标签: Python


      热门