Python入门:len、count、size、shape、get_shape

本文详细介绍了Python中计算数据结构长度的各种方法,包括len(), count(), size(), shape()及get_shape()函数的使用,适用于list、dict、numpy数组和tensorflow张量等不同数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • len():返回对象的长度,如list、dict等,注意不是length()函数 
len([1,2,3,4,5])# 返回值是5
  • count():计算包含对象个数 
[1,2,3,1].count(1)# 返回值为2 

size、shape、get_shape是其他模块中的函数,如:

numpy中:

  • size():计算数组和矩阵所有数据的个数 
  • shape ():得到矩阵每维的大小 
a = np.array([[1,2,3],[4,5,6]]) 
np.size(a)# 返回值为 6 
np.size(a,1)# 返回值为 3

np.shape(a)# 返回值为(2,3)

tfrecord中:

  • tf.shape()和get_shape()都可以得到tensor的尺寸
  • tf.shape(a)中a的数据类型可以是tensor, list, array 
  • a.get_shape()中a的数据类型只能是tensor,且返回的是一个元组(tuple)
x=tf.constant([[1,2,3],[4,5,6]]  
y=[[1,2,3],[4,5,6]]  
z=np.arange(24).reshape([2,3,4]))  
sess=tf.Session()  

x_shape=tf.shape(x)              #  x_shape 是一个tensor  
y_shape=tf.shape(y)              #  <tf.Tensor 'Shape_2:0' shape=(2,) dtype=int32>  
z_shape=tf.shape(z)              #  <tf.Tensor 'Shape_5:0' shape=(3,) dtype=int32>  
print sess.run(x_shape)          # 结果:[2 3]  
print sess.run(y_shape)          # 结果:[2 3]  
print sess.run(z_shape)          # 结果:[2 3 4]  

x_shape=x.get_shape()            # 返回的是TensorShape([Dimension(2), Dimension(3)]),不能使用sess.run() 因为返回的不是tensor或string,而是元组  
x_shape=x.get_shape().as_list()  # 可以使用 as_list()得到具体的尺寸,x_shape=[2 3]  
y_shape=y.get_shape()            # AttributeError: 'list' object has no attribute 'get_shape'  
z_shape=z.get_shape()            # AttributeError: 'numpy.ndarray' object has no attribute 'get_shape'

 

Churn 0 0.75 1 0.25 Name: Churn, dtype: float64 Churn 0 0.732525 1 0.267475 Name: Churn, dtype: float64 --------------------------------------------------------------------------- KeyError Traceback (most recent call last) File D:\Anaconda3\Lib\site-packages\pandas\core\indexes\base.py:3802, in Index.get_loc(self, key, method, tolerance) 3801 try: -> 3802 return self._engine.get_loc(casted_key) 3803 except KeyError as err: File D:\Anaconda3\Lib\site-packages\pandas\_libs\index.pyx:138, in pandas._libs.index.IndexEngine.get_loc() File D:\Anaconda3\Lib\site-packages\pandas\_libs\index.pyx:165, in pandas._libs.index.IndexEngine.get_loc() File pandas\_libs\hashtable_class_helper.pxi:2263, in pandas._libs.hashtable.Int64HashTable.get_item() File pandas\_libs\hashtable_class_helper.pxi:2273, in pandas._libs.hashtable.Int64HashTable.get_item() KeyError: 2 The above exception was the direct cause of the following exception: KeyError Traceback (most recent call last) Cell In[25], line 11 7 length = churn.groupby(name)['Churn'].value_counts().shape[0] 9 for p in range(length): 10 # churn_num = ---> 11 rate = churn.groupby(name)['Churn'].value_counts(1)[p] 12 print(rate) 14 # plt.text(p,100, str(rate),fontsize=12) # 碍于技术上的难题,还没标到图上... File D:\Anaconda3\Lib\site-packages\pandas\core\series.py:981, in Series.__getitem__(self, key) 978 return self._values[key] 980 elif key_is_scalar: --> 981 return self._get_value(key) 983 if is_hashable(key): 984 # Otherwise index.get_value will raise InvalidIndexError 985 try: 986 # For labels that don't resolve as scalars like tuples and frozensets File D:\Anaconda3\Lib\site-packages\pandas\core\series.py:1089, in Series._get_value(self, label, takeable) 1086 return self._values[label] 1088 # Similar to Index.get_value, but we do not fall back to positional -> 1089 loc = self.index.get_loc(label) 1090 return self.index._get_values_for_loc(self, loc, label) File D:\Anaconda3\Lib\site-packages\pandas\core\indexes\multi.py:2916, in MultiIndex.get_loc(self, key, method) 2913 return mask 2915 if not isinstance(key, tuple): -> 2916 loc = self._get_level_indexer(key, level=0) 2917 return _maybe_to_slice(loc) 2919 keylen = len(key) File D:\Anaconda3\Lib\site-packages\pandas\core\indexes\multi.py:3263, in MultiIndex._get_level_indexer(self, key, level, indexer) 3259 return slice(i, j, step) 3261 else: -> 3263 idx = self._get_loc_single_level_index(level_index, key) 3265 if level > 0 or self._lexsort_depth == 0: 3266 # Desired level is not sorted 3267 if isinstance(idx, slice): 3268 # test_get_loc_partial_timestamp_multiindex File D:\Anaconda3\Lib\site-packages\pandas\core\indexes\multi.py:2849, in MultiIndex._get_loc_single_level_index(self, level_index, key) 2847 return -1 2848 else: -> 2849 return level_index.get_loc(key) File D:\Anaconda3\Lib\site-packages\pandas\core\indexes\base.py:3804, in Index.get_loc(self, key, method, tolerance) 3802 return self._engine.get_loc(casted_key) 3803 except KeyError as err: -> 3804 raise KeyError(key) from err 3805 except TypeError: 3806 # If we have a listlike key, _check_indexing_error will raise 3807 # InvalidIndexError. Otherwise we fall through and re-raise 3808 # the TypeError. 3809 self._check_indexing_error(key) KeyError: 2
最新发布
06-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值