Numpy数组是一个多维数组对象,称为ndarray,由两部分组成:

  • 实际的数据
  • 描述这些数据的元数
1
2
3
4
5
6
7
8
9
10
import numpy as np
ar = np.array([[1,2,3,4,5,6],[2,4,6,8,10,12],[3,4,6,8,9,6]])
print([1,2,3,4,5,6])
print(ar,type(ar))
print(ar.ndim) #输出数组维度的个数,或者说“秩”.
print(ar.shape)#数组几行几列
print(ar.size)
print(ar.itemsize)
print(ar.dtype)
type(ar)

一、创建数组

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
# array()函数 arange(),括号内可以是列表、元组、数组、生成器等
ar1 = np.array(range(10))
ar2 = np.arange(10)
ar3 = np.array([1,2,3,4,5])
ar4 = np.array([[1,2,3,4,5],[2,4,6,7,8]])
print(ar1)
print(ar2)
print(ar3)
print(ar4)
print(np.random.rand(10).reshape(2,5))

#linspace():返回[开始,停止,num]上计算的num个均匀间隔的样本
s1 = np.linspace(10,20,num = 20)
s2 = np.linspace(10,20,num = 21)
s3 = np.linspace(10,20,num = 21,endpoint = True)
s4 = np.linspace(10,20,num = 21,retstep = True)
print(s1,len(s1))
print(s2,len(s2))
print(s3)
print(s4,type(s4))
print(s4[0])

#创建单位数组:eye(n) n为单位矩阵的阶数
# 创建一个正方的5*5的单位矩阵,对角线值为1,其余为0
[[ 1. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0.]
[ 0. 0. 1. 0. 0.]
[ 0. 0. 0. 1. 0.]
[ 0. 0. 0. 0. 1.]]

#创建数组:zeros()/zeros_like()/ones()/ones_like()
ar1 = np.zeros(5)
ar2 = np.zeros((2,2),dtype = np.int)
print(ar1,ar1.dtype)
print(ar2,ar2,dtype)

ar3 = np.array([list(range(5)),list(range(5,10))])
ar4 = np.zeros_like(ar3)

print(ar3)
print(ar4)

二、数组的形状、复制、堆叠与拆分

1
2
3
4
5
6
7
8
9
10
11
#数组形状:T/reshape()/resize()

ar1 = np.arange(10)
ar2 = np.arange((2,5))
print(ar1)
print(ar2)
print(ar1.T) # .T转置
print(ar2.reshape(5,2))
print(np.ones((10,10)).reshape(5,20))

#数组的复制:.copy
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
#数组的复制
ar1 = np.arange(10)
ar2 = ar2
print(ar1 is ar2) #逻辑判断
ar1 = [100] #改变ar1
print(ar1,ar2) #ar2,ar1同时改变
ar3 = ar1.copy() #复制ar1
print(ar3)

#数据类型转换:astype()

ar1 = np.arange(10,dtype = float)
ar2 = ar1.astype(np.int64)
print(ar1,ar1.dtype)
print(ar2,ar2.dtype)

#数组堆叠 hstack/vstack

a = np.array([[1],[2],[3],[4],[5]])
b = np.array([['a'],['b'],['c'],['d'],['e']])
print(a)
print(a.T)
print(b)
print(np.hstack((a,b))) #横向堆叠
print(np.vstack((a,b))) #纵向堆叠

#数组拆分

ar = np.arange(16).reshape(4,4)
print(ar)
print(np.hsplit(ar,4))
print(np.vsplit(ar,4))