【问题标题】:How python List and Numpy array works?python List 和 Numpy 数组如何工作?
【发布时间】:2021-07-15 15:03:06
【问题描述】:

数组与 python 列表的工作方式有何不同?

a=[0,1,2,3,4,5,6,7,8,9]
b=2
a==b

给予

False

但是

a=np.array([0,1,2,3,4,5,6,7,8,9])
b=2
a==b

给予

array([False, False, True, False, False, False, False, False, False, False])

【问题讨论】:

    标签: arrays python-3.x list numpy


    【解决方案1】:

    发生这种情况是因为与默认 python 列表相比,numpy 数组上的 __eq__ 方法定义不同。 Numpy 专为各种提议而设计,主要用于数据科学用途,这使得该方法定义成为非常有用(且非常快速)的选择。

    换句话说,np.array 和列表​​是不同的动物。使用每种方法取决于您要达到的目标,尽管对于某些提议而言,它并没有太大差异,因为它们有一些相似之处。

    【讨论】:

      【解决方案2】:

      首先,您不需要在行尾在 python 中添加任何;

      那么,

      a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      b = 2
      a == b
      

      将检查 a 是否等于 b,这意味着它完全相同(此处列表的类型和内容相同)。

      你可以使用:

      a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      b = 2
      b in a # True if yes, false if not
      

      例如。 python中有几种方法(可以阅读here

      使用 numpy 数组有点不同,因为 np.array 和 int/float 的 == 将检查您想要的数字是否是数组的值,并会为您提供每个元素的结果。正如凯文(在评论中)提到的那样,它被称为broadcasting

      这将执行这个计算:

      a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      b = 2
      a == b
      
      result_list = [] 
      for value in a:
        result_list.append(b == value)
      
      print(result_list)
      

      在某些情况下可能更有趣。不要忘记 numpy,因为它是用 Cython 编写的,比我在这里写的要快(尤其是对于大型数组/列表)

      【讨论】:

      • 你应该提到这叫做广播。
      【解决方案3】:

      Numpy 以元素方式返回相等,参见 here

      Python 按元素检查相等性:如果发现两个元素不同(或长度不同),则返回 false,否则返回 true。请参阅here 第 5.8 段。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-21
        • 2015-12-24
        • 1970-01-01
        • 2018-11-30
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多