- unique()
- numpy.tolist()
- collections.defaultdict()
- random.sample()[]
1、 unique():返回参数数组中所有不同的值,并按照从小到大排序
可选参数:
return_index=True: 返回新列表中的每个元素在原列表中第一次出现的索引值,因此元素个数与新列表中元素个数一样;
return_inverse=True:返回原列表中的每个元素在新列表中出现的索引值,因此元素个数与原列表中元素个数一样。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #一、元素为数值型数据 2 3 import numpy as np 4 5 A = [1, 2, 5, 3, 4, 3] 6 print ("原列表:", A) 7 print ("================") 8 9 #返回任意的一个参数值 10 a = np.unique(A) 11 print ("新列表:", a) 12 print ("================") 13 14 #返回任意的两个参数值 15 a, s = np.unique(A, return_index=True) 16 print ("新列表:",a) 17 print ("return_index:",s) 18 print ("===============") 19 20 #返回全部三个参数值 21 a, s, p = np.unique(A, return_index=True, return_inverse=True) 22 print ("新列表:",a) 23 print ("return_index", s) 24 print ("return_inverse", p)
2、numpy tolist()将数组或者矩阵转换成列表;但是当矩阵是一维的时候,就不同了,所以一维矩阵经常会有tolist()[0]
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> from numpy import * 2 >>> a1 = [[1,2,3],[4,5,6]] # a1是列表 3 >>> a2 = array(a1) # 列表——>数组 4 >>> a2 5 array([[1, 2, 3], 6 [4, 5, 6]]) 7 >>> a3 = mat(a1) # 列表——>矩阵 8 >>> a3 9 matrix([[1, 2, 3], 10 [4, 5, 6]]) 11 >>> a4 = a2.tolist() # 数组——>列表 12 >>> a4 13 [[1, 2, 3], [4, 5, 6]] 14 >>> a5 = a3.tolist() # 矩阵——>列表 15 >>> a5 16 [[1, 2, 3], [4, 5, 6]] 17 >>> a4 == a5 18 True 19 >>> a6 = mat(a2) # 数组--> 矩阵 20 >>> a6 21 matrix([[1, 2, 3], 22 [4, 5, 6]]) 23 >>> a6 == a3 24 matrix([[ True, True, True], 25 [ True, True, True]], dtype=bool) 26 >>> a7 = array(a3) # 矩阵--> 数组 27 >>> a7 28 array([[1, 2, 3], 29 [4, 5, 6]]) 30 >>> a7 == a2 31 array([[ True, True, True], 32 [ True, True, True]], dtype=bool)
当矩阵是一维的时候,就不同了,所以一维矩阵经常会有tolist()[0]
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> a1 =[1,2,3,4,5,6] # 列表 2 >>> a2 = array(a1) # 列表 --> 数组 3 >>> a2 4 array([1, 2, 3, 4, 5, 6]) 5 >>> a3 = mat(a1) #列表 ----> 矩阵 6 >>> a3 7 matrix([[1, 2, 3, 4, 5, 6]]) 8 >>> a4 = a3.tolist() #矩阵 ---> 列表 9 >>> a4 10 [[1, 2, 3, 4, 5, 6]] # 注意!!有不同 11 >>> a1 == a4 12 False 13 >>> a8 = a3.tolist()[0] #矩阵 ---> 列表 14 >>> a8 15 [1, 2, 3, 4, 5, 6] # 注意!!有不同 16 >>> a1 == a8 17 True 18 >>> a5 = a2.tolist() # 数组 ---> 列表 19 >>> a5 20 [1, 2, 3, 4, 5, 6] 21 >>> a5 == a1 22 True 23 >>> a6 = mat(a2) # 数组 ---> 矩阵 24 >>> a6 25 matrix([[1, 2, 3, 4, 5, 6]]) 26 >>> a6 == a3 27 matrix([[ True, True, True, True, True, True]], dtype=bool) 28 >>> a7 = array(a3) # 矩阵 ---> 数组 29 >>> a7 30 array([[1, 2, 3, 4, 5, 6]]) 31 >>> a7 == a2 32 array([[ True, True, True, True, True, True]], dtype=bool)
3、Python中通过Key访问字典,当Key不存在时,会引发‘KeyError’异常。为了避免这种情况的发生,可以使用collections类中的defaultdict()方法来为字典提供默认值。
(1)使用list作第一个参数,可以很容易将键-值对序列转换为列表字典。
(2)defaultdict还可以被用来计数,将default_factory设为int即可。
(3)default_factory设为set时,可以用defaultdict建立集合字典(a dictionary of sets)。
4、对于random.sample的用法,多用于截取列表的指定长度的随机数,但是不会改变列表本身的排序;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
list = [0,1,2,3,4] rs = random.sample(list, 2) print(rs) print(list) 》》》[2, 4] #此数组随着不同的执行,里面的元素随机,但都是两个 》》》[0, 1, 2, 3, 4]
跟range相结合,在指定范围内获取一定长度的数据,这个用起来就比较灵活,代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
rs = random.sample(range(0, 9), 4) print(rs) 》》》[2, 6, 0, 4]