Numpy是python中最有用的工具之一。它可以有效地处理大容量数据。使用NumPy的最大原因之一是它有很多处理数组的函数。在本文中,将介绍NumPy在数据科学中最重要和最有用的一些函数。
创建数组
1、Array
它用于创建一维或多维数组
- numpy.array(object, dtype=None, *,
- copy=True, order='K', subok=False, ndmin=0, like=None)
Dtype:生成数组所需的数据类型。
ndim:指定生成数组的最小维度数。
- import numpy as np
- np.array([1,2,3,4,5])
- ----------------
- array([1, 2, 3, 4, 5, 6])
还可以使用此函数将pandas的df和series转为NumPy数组。
- sex = pd.Series(['Male','Male','Female'])
- np.array(sex)
- ------------------------
- array(['Male', 'Male', 'Female'], dtype=object)
2、Linspace
创建一个具有指定间隔的浮点数的数组。
- numpy.linspace(start, stop, num=50, endpoint=True,
- retstep=False, dtype=None, axis=0)[source]
start:起始数字
end:结束
Num:要生成的样本数,默认为50。
- np.linspace(10,100,10)
- --------------------------------
- array([ 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.])
3、Arange
在给定的间隔内返回具有一定步长的整数。
numpy.arange([start, ]stop, [step, ]dtype=None, *, like=None)
step:数值步长。
- np.arange(5,10,2)
- -----------------------
- array([5, 7, 9])
4、Uniform
在上下限之间的均匀分布中生成随机样本。
- numpy.random.uniform(low=0.0, high=1.0, size=None)
- np.random.uniform(5,10,size = 4)
- ------------
- array([6.47445571, 5.60725873, 8.82192327, 7.47674099])
-
- np.random.uniform(size = 5)
- ------------
- array([0.83358092, 0.41776134, 0.72349553])
-
- np.random.uniform(size = (2,3))
- ------------
- array([[0.7032511 , 0.63212039, 0.6779683 ],
- [0.81150812, 0.26845613, 0.99535264]])
5、Random.randint
在一个范围内生成n个随机整数样本。
- numpy.random.randint(low, high=None, size=None, dtype=int)
- np.random.randint(5,10,10)
- ------------------------------
- array([6, 8, 9, 9, 7, 6, 9, 8, 5, 9])
6、Random.random
生成n个随机浮点数样本。
- numpy.random.random(size=None)
- np.random.random(3)
- ---------------------------
- array([0.87656396, 0.24706716, 0.98950278])
7、Logspace
在对数尺度上生成间隔均匀的数字。
- numpy.logspace(start, stop, num=50, endpoint=True,
- base=10.0, dtype=None, axis=0)
Start:序列的起始值。End:序列的最后一个值。endpoint:如果为True,最后一个样本将包含在序列中。base:底数。默认是10。
- np.logspace(0,10,5,base=2)
- ------------------
- array([1.00000000e+00, 5.65685425e+00,
- 3.20000000e+01, 1.81019336e+02,1.02400000e+03])
8、zeroes
np.zeroes会创建一个全部为0的数组。
numpy.zeros(shape, dtype=float, order='C', *, like=None)
shape:阵列的形状。
Dtype:生成数组所需的数据类型。' int '或默认' float '
- np.zeros((2,3),dtype='int')
- ---------------
- array([[0, 0, 0],
- [0, 0, 0]])
-
- np.zeros(5)
- -----------------
- array([0., 0., 0., 0., 0.])
9、ones
np.ones函数创建一个全部为1的数组。
- numpy.ones(shape, dtype=None, order='C', *, like=None)
- np.ones((3,4))
- ------------------
- array([[1., 1., 1., 1.],
- [1., 1., 1., 1.],
- [1., 1., 1., 1.]])
10、full
创建一个单独值的n维数组。
numpy.full(shape, fill_value, dtype=None, order='C', *, like=None)
fill_value:填充值。
- np.full((2,4),fill_value=2)
- --------------
- array([[2, 2, 2, 2],
- [2, 2, 2, 2]])(2,4) : ꜱʜᴀᴘᴇ
11、Identity
创建具有指定维度的单位矩阵。
- numpy.identity(n, dtype=None, *, like=None)
- np.identity(4)
- ----------
- array([[1., 0., 0., 0.],
- [0., 1., 0., 0.],
- [0., 0., 1., 0.],
- [0., 0., 0., 1.]])#ᴅᴇꜰᴀᴜʟᴛ ᴅᴀᴛᴀ ᴛʏᴘᴇ ɪꜱ `ꜰʟᴏᴀᴛ`
数组操作
12、min
返回数组中的最小值。
- np.min(a, axis=None, out=None, keepdims=<no value>,
- initial=<no value>, where=<no value>)
axis:用于操作的轴。
out:用于存储输出的数组。
- arr = np.array([1,1,2,3,3,4,5,6,6,2])
- np.min(arr)
- ----------------
- 1
13、max
返回数组中的最大值。
- np.max(a, axis=None,out=None)
- np.max(arr)
- ------------------
- 6
14、unique
返回一个所有唯一元素排序的数组。
numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None, *, equal_nan=True)
return_index:如果为True,返回数组的索引。
return_inverse:如果为True,返回唯一数组的下标。
return_counts:如果为True,返回数组中每个唯一元素出现的次数。
axis:要操作的轴。默认情况下,数组被认为是扁平的。
- np.unique(arr,return_counts=True)
- ---------------------
- (
- array([1, 2, 3, 4, 5, 6]), ## Unique elements
- array([2, 2, 2, 1, 1, 2], dtype=int64) ## Count
- )
15、mean
返回数组的平均数
- numpy.mean(a, axis=None, dtype=None, out=None)
- np.mean(arr,dtype='int')
- -------------------------------
- 3
16、medain
返回数组的中位数。
- numpy.medain(a, axis=None, out=None)
- arr = np.array([[1,2,3],[5,8,4]])
- np.median(arr)
- -----------------------------
- 3.5
17、digitize
返回输入数组中每个值所属的容器的索引。
numpy.digitize(x, bins, right=False)[source]
bin:容器的数组。right:表示该间隔是否包括右边或左边的bin。
- a = np.array([-0.9, 0.5, 0.9, 1, 1.2, 1.4, 3.6, 4.7, 5.3])
- bins = np.array([0,1,2,3])
- np.digitize(a,bins)
- -------------------------------
- array([0, 1, 1, 2, 2, 2, 4, 4, 4], dtype=int64)
- Exp Value
- x < 0 : 0
- 0 <= x <1 : 1
- 1 <= x <2 : 2
- 2 <= x <3 : 3
- 3 <=x : 4
- Compares -0.9 to 0, here x < 0 so Put 0 in resulting array.
- Compares 0.5 to 0, here 0 <= x <1 so Put 1.
- Compares 5.4 to 4, here 3<=x so Put 4
18、reshape
它是NumPy中最常用的函数之一。它返回一个数组,其中包含具有新形状的相同数据。
- numpy.reshape(shap)
- A = np.random.randint(15,size=(4,3))
- A
- ----------------------
- array([[ 8, 14, 1],
- [ 8, 11, 4],
- [ 9, 4, 1],
- [13, 13, 11]])
-
- A.reshape(3,4)
- -----------------
- array([[ 8, 14, 1, 8],
- [11, 4, 9, 4],
- [ 1, 13, 13, 11]])
-
- A.reshape(-1)
- -------------------
- array([ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11])
19、expand_dims
它用于扩展数组的维度。
- numpy.expand_dims(a, axis)
- arr = np.array([ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11])
- np.expand_dims(A,axis=0)
- -------------------------
- array([[ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11]])
-
- np.expand_dims(A,axis=1)
- ---------------------------
- array([[ 8],
- [14],
- [ 1],
- [ 8],
- [11],
- [ 4],
- [ 9],
- [ 4],
- [ 1],
- [13],
- [13],
- [11]])
20、squeeze
通过移除一个单一维度来降低数组的维度。
- np.squeeze(a, axis=None)
- arr = np.array([[ 8],[14],[ 1],[ 8],[11],[ 4],[ 9],[ 4],[ 1],[13],[13],[11]])
- np.squeeze(arr)
- ---------------------------
- array([ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11])
21、count_nonzero
计算所有非零元素并返回它们的计数。
- numpy.count_nonzero(a, axis=None, *, keepdims=False)
- a = np.array([0,0,1,1,1,0])
- np.count_nonzero(a)
- --------------------------
- 3
22、argwhere
查找并返回非零元素的所有下标。
- numpy.argwhere(a)
- a = np.array([0,0,1,1,1,0])
- np.argwhere(a)
- ---------------------
- array([[2],[3],[4]], dtype=int64)
23、argmax & argmin
argmax返回数组中Max元素的索引。它可以用于多类图像分类问题中获得高概率预测标签的指标。
- numpy.argmax(a, axis=None, out=None, *, keepdims=<no value>)
- arr = np.array([[0.12,0.64,0.19,0.05]])
- np.argmax(arr)
- ---------
- 1
argmin将返回数组中min元素的索引。
- numpy.argmin(a, axis=None, out=None, *, keepdims=<no value>)
- np.argmin(min)
- ------
- 3
24、sort
对数组排序。
numpy.sort(a, axis=- 1, kind=None, order=None)
kind:要使用的排序算法。{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’}
- arr = np.array([2,3,1,7,4,5])
- np.sort(arr)
- ----------------
- array([1, 2, 3, 4, 5, 7])
25、abs
- numpy.absolute(x, /, out=None, *,
- where=True, casting='same_kind',
- order='K', dtype=None,
- subok=True[, signature, extobj]) = <ufunc 'absolute'>
返回数组中元素的绝对值。当数组中包含负数时,它很有用。
- A = np.array([[1,-3,4],[-2,-4,3]])np.abs(A)
- ---------------
- array([[1, 3, 4],
- [2, 4, 3]])
26、round
将浮点值四舍五入到指定数目的小数点。
numpy.around(a, decimals=0, out=None)
decimals:要保留的小数点的个数。
- a = np.random.random(size=(3,4))
- a
- -----
- array([[0.81695699, 0.42564822, 0.65951417, 0.2731807 ],
- [0.7017702 , 0.12535894, 0.06747666, 0.55733467],
- [0.91464488, 0.26259026, 0.88966237, 0.59253923]])
-
-
- np.round(a,decimals=0)
- ------------
- array([[1., 0., 1., 1.],
- [1., 1., 1., 1.],
- [0., 1., 0., 1.]])
-
- np.round(a,decimals=1)
- -------------
- array([[0.8, 0. , 0.6, 0.6],
- [0.5, 0.7, 0.7, 0.8],
- [0.3, 0.9, 0.5, 0.7]])
27、clip
numpy.clip(a, a_min, a_max, out=None, **kwargs)
它可以将数组的裁剪值保持在一个范围内。
- arr = np.array([0,1,-3,-4,5,6,7,2,3])
- arr.clip(0,5)
- -----------------
- array([0, 1, 0, 0, 5, 5, 5, 2, 3])
-
- arr.clip(0,3)
- ------------------
- array([0, 1, 0, 0, 3, 3, 3, 2, 3])
-
- arr.clip(3,5)
- ------------------
- array([3, 3, 3, 3, 5, 5, 5, 3, 3])
-END-
扫码添加请备注:python,进群与宋老师面对面交流:517745409