1 如何取得惟一元素和呈现次数
应用np.unique能够很容易地找到数组中惟一的元素。
例如,如果从这个数组开始:
>>> a = np.array([11, 11, 12, 13, 14, 15, 16, 17, 12, 13, 11, 14, 18, 19, 20])
能够应用np.unique打印数组中的惟一值:
>>> unique_values = np.unique(a)>>> print(unique_values)[11 12 13 14 15 16 17 18 19 20]
要获取NumPy数组中惟一值的索引(数组中惟一值的第一个索引地位的数组),只需在np.unique()中传递return_index参数:
>>> unique_values, indices_list = np.unique(a, return_index=True)>>> print(indices_list)[ 0 2 3 4 5 6 7 12 13 14]
能够将np.unique()中的return_counts参数与数组一起传递,以获取NumPy数组中惟一值的频率计数。
>>> unique_values, occurrence_count = np.unique(a, return_counts=True)>>> print(occurrence_count)[3 2 2 2 1 1 1 1 1 1]
这也实用于二维数组!如果从这个数组开始:
a_2d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [1, 2, 3, 4]])
能够通过以下形式找到惟一的值:
>>> unique_values = np.unique(a_2d)>>> print(unique_values)[ 1 2 3 4 5 6 7 8 9 10 11 12]
如果未传递axis参数,则二维数组将被展平。
如果要获取惟一的行或列,请确保传递axis参数。若要查找惟一的行,请指定axis=0,对于列,请指定axis=1
>>> unique_rows = np.unique(a_2d, axis=0)>>> print(unique_rows)[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]
要获取惟一行、索引地位和呈现次数,能够应用:
>>> unique_rows, indices, occurrence_count = np.unique(... a_2d, axis=0, return_counts=True, return_index=True)>>> print(unique_rows)[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]>>> print(indices)[0 1 2]>>> print(occurrence_count)[2 1 1]
2 重塑和展平多维数组
有两种罕用的展平数组的办法:.flatten() 和.ravel()。
两者之间的次要区别在于,应用ravel()创立的新数组实际上是对父数组的援用(即“视图”)。这意味着对新数组的任何更改也将影响父数组。因为ravel不创立拷贝,所以它的内存效率很高。
如果从这个数组开始:
>>> x = np.array([[1 , 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
能够应用“flatten”将数组展平为1D阵列
>>> x.flatten()array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
应用“flatten”时,对新数组的更改不会更改父数组。
>>> a1 = x.flatten()>>> a1[0] = 99>>> print(x) # Original array[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]>>> print(a1) # New array[99 2 3 4 5 6 7 8 9 10 11 12]
然而应用ravel时,对新数组所做的更改将影响父数组。例如:
>>> a2 = x.ravel()>>> a2[0] = 98>>> print(x) # Original array[[98 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]>>> print(a2) # New array[98 2 3 4 5 6 7 8 9 10 11 12]
最近整顿了几百 G 的 Python 学习材料,蕴含新手入门电子书、教程、源码等等,收费分享给大家!想要的返回 “Python 编程学习圈”,发送 “J” 即可收费取得