len和size之间的差异

时间:2019-08-28 11:46:12

标签: python-3.x built-in

我发现了两种方法来确定一个变量中有多少个元素…… 对于len ()size (),我总是得到相同的值。有区别吗? size ()是否附带了导入的库(例如mathnumpypandas)?

asdf = range (10)
print ( 'len:', len (asdf), 'versus size:', size (asdf) )

asdf = list (range (10))
print ( 'len:', len (asdf), 'versus size:', size (asdf) )

asdf = np.array (range (10))
print ( 'len:', len (asdf), 'versus size:', size (asdf) )

asdf = tuple (range (10))
print ( 'len:', len (asdf), 'versus size:', size (asdf) )

3 个答案:

答案 0 :(得分:4)

size来自numpy(熊猫所基于)。

它提供了数组中元素的总数。但是,您也可以使用np.size查询特定轴的大小(见下文)。

相反,len给出了第一维度的长度。

例如,让我们创建一个数组,其中包含36个元素,这些元素分为三个维度。

In [1]: import numpy as np                                                      

In [2]: a = np.arange(36).reshape(2, 3, -1)                                     

In [3]: a                                                                       
Out[3]: 
array([[[ 0,  1,  2,  3,  4,  5],
        [ 6,  7,  8,  9, 10, 11],
        [12, 13, 14, 15, 16, 17]],

       [[18, 19, 20, 21, 22, 23],
        [24, 25, 26, 27, 28, 29],
        [30, 31, 32, 33, 34, 35]]])

In [4]: a.shape                                                                 
Out[4]: (2, 3, 6)

size

size将为您提供总数个元素。

In [5]: a.size                                                        
Out[5]: 36

len

len将为您提供第一维度的“元素”数量。

In [6]: len(a)                                                                  
Out[6]: 2

这是因为在这种情况下,每个“元素”都代表一个二维数组。

In [14]: a[0]                                                                   
Out[14]: 
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17]])

In [15]: a[1]                                                                   
Out[15]: 
array([[18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35]])

这些数组又具有自己的形状和大小。

In [16]: a[0].shape                                                             
Out[16]: (3, 6)

In [17]: len(a[0])                                                              
Out[17]: 3

np.size

您可以将sizenp.size一起使用。

例如,您可以通过指定第一个('0')维来复制len

In [11]: np.size(a, 0)                                                          
Out[11]: 2

您还可以查询其他尺寸的大小。

In [10]: np.size(a, 1)                                                          
Out[10]: 3

In [12]: np.size(a, 2)                                                          
Out[12]: 6

基本上,您会重现shape的值。

答案 1 :(得分:0)

脾气暴躁的nparray有Size https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.size.html

len来自Python本身

Size来自numpy ndarray.size

主要区别是nparray大小仅测量数组的大小,而python的Len可用于获取对象的长度

答案 2 :(得分:0)

考虑以下示例:

a = numpy.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])
print(len(a))
#output is 2
print(numpy.size(a))
#output is 12

len()是一种内置方法,用于计算诸如strlistdict等可迭代python对象的长度。len返回长度可迭代的数量,即元素数量。在上面的示例中,数组实际上的长度为2,因为它是一个嵌套列表,其中每个列表都被视为一个元素。

numpy.size()返回数组的大小,它等于n_dim1 * n_dim2 * --- n_dimn,即它是数组尺寸的乘积,例如,如果我们有一个尺寸为(5,5, 2),大小为50,因为它可以容纳50个元素。但是len()将返回5,因为高阶列表(或第1维为5)中的元素数量。

根据您的问题,len()numpy.size()对于一维数组(与列表相同)以矢量形式返回相同的输出。但是,对于二维+数组,结果是不同的。因此,要获得正确的答案,请使用numpy.size()返回实际大小。

当您对任何可迭代的对象调用numpy.size()时(如您的示例所示),首先将其转换为numpy数组对象,然后调用size()。

感谢A2A