📜  NumPy-排序,搜索和计数功能(1)

📅  最后修改于: 2023-12-03 15:18:03.522000             🧑  作者: Mango

NumPy-排序,搜索和计数功能

NumPy是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,其中包括排序,搜索和计数功能。本文将介绍NumPy中常用的排序、搜索和计数函数及其用法。

排序函数
np.sort(arr, axis=-1, kind=None, order=None)

该函数返回给定数组的排序副本。默认按照最后一个轴排序。

import numpy as np

arr = np.array([3, 1, 4, 2, 5])
print(np.sort(arr))  # [1 2 3 4 5]

arr_2d = np.array([[3, 1, 4], [2, 5, 0]])
print(np.sort(arr_2d, axis=0))  # [[2 1 0]
                                #  [3 5 4]]
arr.sort(axis=-1, kind=None, order=None)

ndarray类也有一个sort方法,返回原始数组的排序版本。

import numpy as np

arr = np.array([3, 1, 4, 2, 5])
arr.sort()
print(arr)  # [1 2 3 4 5]

arr_2d = np.array([[3, 1, 4], [2, 5, 0]])
arr_2d.sort(axis=0)
print(arr_2d)  # [[2 1 0]
               #  [3 5 4]]
np.argsort(arr, axis=-1, kind='quicksort', order=None)

返回沿给定轴排序后的索引数组。因此,如果输入数组的第i个元素在排序后位于j位置,则输出数组的第j个元素为i。

import numpy as np

arr = np.array([3, 1, 4, 2, 5])
indices = np.argsort(arr)
print(indices)  # [1 3 0 2 4]

arr_2d = np.array([[3, 1, 4], [2, 5, 0]])
indices = np.argsort(arr_2d, axis=0)
print(indices)  # [[1 0 1]
                #  [0 1 0]]
搜索函数
np.argmax(arr, axis=None, out=None)

返回沿给定轴的最大值的索引。

import numpy as np

arr = np.array([3, 1, 4, 2, 5])
maximum_index = np.argmax(arr)
print(maximum_index)  # 4

arr_2d = np.array([[3, 1, 4], [2, 5, 0]])
maximum_index = np.argmax(arr_2d, axis=0)
print(maximum_index)  # [0 1 0]
np.argmin(arr, axis=None, out=None)

返回沿给定轴的最小值的索引。

import numpy as np

arr = np.array([3, 1, 4, 2, 5])
minimum_index = np.argmin(arr)
print(minimum_index)  # 1

arr_2d = np.array([[3, 1, 4], [2, 5, 0]])
minimum_index = np.argmin(arr_2d, axis=0)
print(minimum_index)  # [1 0 1]
计数函数
np.count_nonzero(arr)

返回数组中的非零元素数。

import numpy as np

arr = np.array([3, 1, 4, 0, 5])
nonzero_count = np.count_nonzero(arr)
print(nonzero_count)  # 4

arr_2d = np.array([[3, 1, 4], [2, 0, 0]])
nonzero_count = np.count_nonzero(arr_2d)
print(nonzero_count)  # 5
np.nonzero(arr)

返回非零元素的索引。

import numpy as np

arr = np.array([3, 1, 4, 0, 5])
nonzero_indices = np.nonzero(arr)
print(nonzero_indices)  # (array([0, 1, 2, 4], dtype=int64),)

arr_2d = np.array([[3, 1, 4], [2, 0, 0]])
nonzero_indices = np.nonzero(arr_2d)
print(nonzero_indices)  # (array([0, 0, 1], dtype=int64), array([0, 2, 0], dtype=int64))
np.bincount(arr, weights=None, minlength=0)

统计数组中每个整数出现的次数。weights参数可用于指定每个元素的权重,minlength参数可用于指定输出数组的最小长度。

import numpy as np

arr = np.array([3, 1, 4, 0, 5, 1, 2, 2])
bin_count = np.bincount(arr)
print(bin_count)  # [1 2 2 1 1 1]

arr_2d = np.array([[3, 1, 4], [2, 0, 0]])
bin_count = np.bincount(arr_2d.ravel())
print(bin_count)  # [2 1 1 1 1 1 1 1 1]

以上就是NumPy中常用的排序、搜索和计数函数,它们可以帮助我们更高效地处理数组数据。