Python之科学计算包Numpy

在本文章中将会记录科学计算包Numpy的常用方法,并不断更新。

shape

作用:探测数组的维度

1
2
3
4
5
6
7
>>> arr = array([[0.0,0.1,0.2],[1.0,1.1,1.2]])
>>> arr.shape
(2,3)
>>> arr.shape[0]
2
>>> arr.shape[1]
3

tile

1
tile(A,B)

作用:重复A,B次(B可以是int类型,也可以是元组类型)

当B是int类型时,在列方向上重复B次,行默认1次

1
2
3
4
5
6
>>> tile([0,1,2],3)
array([0, 1, 2, 0, 1, 2, 0, 1, 2])

>>> tile([[0.0,0.1],[1.0,1.1]],3)
array([[0. , 0.1, 0. , 0.1, 0. , 0.1],
[1. , 1.1, 1. , 1.1, 1. , 1.1]])

当B是元组类型时,分别在对应维度重复指定次数

1
2
3
>>> tile([0,1,2],(2,3))
array([[0, 1, 2, 0, 1, 2, 0, 1, 2],
[0, 1, 2, 0, 1, 2, 0, 1, 2]])

sum

作用:给定轴上数组元素的和

假设存在三维数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
arr = [
[
[0,1,2],
[1,2,3],
[2,3,4]
],
[
[1,2,3],
[2,3,4],
[3,4,5]
]
]

>>> shape(arr)
(2,3,3)

当没有指定axis时,是求整个数组的和:

1
2
>>> sum(arr)
45

当指定axis时,是求该axis(轴)的和

1
2
3
4
5
6
7
8
9
10
>>> sum(arr,axis=0)
array([[1, 3, 5],
[3, 5, 7],
[5, 7, 9]])
>>> sum(arr,axis=1)
array([[ 3, 6, 9],
[ 6, 9, 12]])
>>> sum(arr,axis=2)
array([[ 3, 6, 9],
[ 6, 9, 12]])

注意:当指定axis时,对所求出的和再进行求和最终是等于不加axis时的值

参考传送门python 中 np.sum()函数 通俗易懂理解!

argsort

作用:对数组进行排序,并按从小到大返回相应的索引值

1
2
3
4
5
6
>>> argsort([2,3,1])
array([2, 0, 1])

>>> argsort([[6,4,2],[1,5,3]])
array([[2, 1, 0],
[0, 2, 1]])

当指定axis时,根据指定axis(轴)进行排序*(axis默认值为-1,即最后一轴)*

1
2
3
4
5
6
7
8
>>> argsort([[6,4,2],[1,5,3]],axis=0)
array([[1, 0, 0],
[0, 1, 1]])

# 在这里数组只有两维,即axis=1与默认的axis=-1等效
>>> argsort([[6,4,2],[1,5,3]],axis=1)
array([[2, 1, 0],
[0, 2, 1]])

参考传送门argsort

zeros

作用:创建指定维度和类型并以0填充的数组。

创建一维数组

1
2
>>> zeros(5)
array([0., 0., 0., 0., 0.])

创建多维数组

1
2
3
4
5
6
>>> zeros((5,2))
array([[0., 0.],
[0., 0.],
[0., 0.],
[0., 0.],
[0., 0.]])

min

作用:给定轴上数组的最小值

假定三维数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
arr = array([
[
[1,5,9,4],
[8,6,11,2],
[24,15,3,21]
],
[
[7,17,10,19],
[20,12,22,13],
[14,16,18,21]
]
])

>>> arr.shape
(2, 3, 4)

当没有参数时,返回数组元素中的最小元素

1
2
>>> arr.min()
1

当指定参数时,求该轴上的最小值,参数范围为[0,shape - 1],shape的值为数组维度数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
array([[[ 1,  5,  9,  4],
[ 8, 6, 11, 2],
[24, 15, 3, 21]],

[[ 7, 17, 10, 19],
[20, 12, 22, 13],
[14, 16, 18, 21]]])

>>> arr.min(0)
array([[ 1, 5, 9, 4],
[ 8, 6, 11, 2],
[14, 15, 3, 21]])

>>> arr.min(1)
array([[ 1, 5, 3, 2],
[ 7, 12, 10, 13]])

>>> arr.min(2)
array([[ 1, 2, 3],
[ 7, 12, 14]])

max

作用:给定轴上数组的最大值

假定三维数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
arr = array([
[
[1,5,9,4],
[8,6,11,2],
[24,15,3,21]
],
[
[7,17,10,19],
[20,12,22,13],
[14,16,18,21]
]
])

>>> arr.shape
(2, 3, 4)

当没有参数时,返回数组元素中的最小元素

1
2
>>> arr.max()
24

当指定参数时,求该轴上的最小值,参数范围为[0,shape - 1],shape的值为数组维度数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
array([[[ 1,  5,  9,  4],
[ 8, 6, 11, 2],
[24, 15, 3, 21]],

[[ 7, 17, 10, 19],
[20, 12, 22, 13],
[14, 16, 18, 21]]])

>>> arr.max(0)
array([[ 7, 17, 10, 19],
[20, 12, 22, 13],
[24, 16, 18, 21]])

>>> arr.max(1)
array([[24, 15, 11, 21],
[20, 17, 22, 21]])

>>> arr.max(2)
array([[ 9, 11, 24],
[19, 22, 21]])

参考

Numpy官方文档