Numpy数组—Array
Numpy的主要对象是多维数组。它是一个由元素(通常是数字)构成的表,所有元素的类型相同。维度的数量称为数组的阶(rank),数组的大小是一个由整型数构成的元组,可以描述数组不同维度上的大小。

1
2
3
4
5
import numpy as np 

a = np.array([0, 1, 2, 3])
print(type(a))
print(a)

Numpy的数组类叫做ndarray,别名是array
数组的属性:
ndarray.ndim:数组的维度数
ndarray.shape:数组每个维度的大小
ndarray.size:数组中元素的总个数
ndarray.dtype: 数组中元素的类型
ndarray.itemsize: 数组中每个元素所占的字节数
ndarray.data: 包含真实数组元素的缓冲区

1
2
3
4
5
6
7
8
9
10
11
import numpy as np  

a = np.array([[0.,1.,2.],[3.,4.,5.]]) # 创建一个2维数组
print(a) # 打印 "[[ 0. 1. 2.]
# [ 3. 4. 5.]]"
print(a.ndim) # 打印 "2"
print(a.shape) # 打印 "(2, 3)"
print(a.size) # 打印 "6"
print(a.dtype) # 打印 "float64"
print(a.itemsize) # 打印 "8" (64/8=8)
print(a.data) # 打印 "<memory at 0x7f18400ae3a8>"

手动创建数组

可以利用array函数从python的列表或元组创建一个数组。

1
2
3
4
5
6
7
8
9
#1维数组
import numpy as np # 导入Numpy的推荐方式
a = np.array([0, 1, 2, 3]) # 创建一维数组

#2维及多维数组
import numpy as np
b = np.array([[0, 1, 2],[3, 4, 5]]) # 创建2维数组
print(b) # 打印 "[[0 1 2]
# [3 4 5]]"

用函数创建数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#arange:等间距分布的数组

import numpy as np

a = np.arange(10) # 0,1,..n-1
print(a) # 打印 "[0 1 2 3 4 5 6 7 8 9]"
b = np.arange(1, 9, 2) # start, end(不包含),step
print(b) # 打印 "[1 3 5 7]"
c = np.arange(0, 2.5, 0.4) # 参数可以是浮点数
print(c) # 打印 "[ 0. 0.4 0.8 1.2 1.6 2. 2.4]"

#linspace:指定数量(长度)的数组:

import numpy as np

d = np.linspace(0, 1, 6) # start,end, num-points
print(d) # 打印 "[ 0. 0.2 0.4 0.6 0.8 1. ]"
e = np.linspace(0, 1, 5, endpoint=False) # 可以显示的指定不包括最后一个点
print(d) # 打印 "[ 0. 0.2 0.4 0.6 0.8]"

#常用数组
import numpy as np

a = np.ones((1,2)) # 创建元素全为1的数组
print(a) # 打印 "[[ 1. 1.]]"

b = np.zeros((2,2)) # 创建元素全为0的数组
print(b) # 打印 "[[ 0. 0.]
# [ 0. 0.]]"

c = np.full((2,2), 7) # 创建一个用固定值填充的数组
print(c) # 打印 "[[ 7. 7.]
# [ 7. 7.]]"
d = np.eye(2) # 创建对角线为1,其它元素为0的2维数组
print(d) # 打印 "[[ 1. 0.]
# [ 0. 1.]]"
e = np.diag(np.array([1,2,3])) # 从2维数组提取对角线,或从一维数组构建对角线矩阵
print(e) # 打印 "[[1 0 0]
# [0 2 0]
# [0 0 3]]"
f = np.empty((2,2)) # 创建随机初始的数组
print(f) # 打印 "[[ 4.94065646e-324 9.88131292e-324]
# [ 1.48219694e-323 1.97626258e-323]]"

基本运算

数组的算术运算是按元素的。新的数组被创建并且被结果填充。

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> a = array( [20,30,40,50] )
>>> b = arange( 4 )
>>> b
array([0, 1, 2, 3])
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10*sin(a)
array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854])
>>> a<35
array([True, True, False, False], dtype=bool)