Contents
1.生成ndarray的几种方式
ndarray是NumPy封装的一个新的数据类型,一个多维数组对象,该对象封装了许多常用的数学运算函数,方便我们进行数据处理以及数据分析。生成ndarray的方式有以下几种:
1.从已有数据中创建
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import numpy as np list1 = [1, 2, 3, 4, 5] list2 = [[1, 2], [3, 4], [5, 6]] # 多维的列表可以转成多维ndarray nd1 = np.array(list1) nd2 = np.array(list2) print(nd1) print(nd2) print(type(nd1)) ''' [1 2 3 4 5] [[1 2] [3 4] [5 6]] <class 'numpy.ndarray'> ''' |
2.利用random模块生成
参考 np.random模块。
3.创建特定形状的多维度数组
函数 | 作用 |
---|---|
np.zeros(shape) | 生成形状为shape的全是0的矩阵 |
np.ones(shape) | 生成形状为shape的全是1的矩阵 |
np.eye(n) | 生成n阶单位矩阵 |
np.diag(v) | 生成对角矩阵,对角线上的元素为列表v |
np.repeat(a, r) | 将a中的每个元素重复r次 |
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 |
import numpy as np nd1 = np.diag([1,2,3]) print(nd1) ''' [[1 0 0] [0 2 0] [0 0 3]] ''' nd1 = np.eye(3) print(nd1) ''' [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] ''' nd1 = np.ones([2,3]) print(nd1) ''' [[1. 1. 1.] [1. 1. 1.]] ''' nd1 = np.repeat([1, 2, 3], 3) print(nd1) ''' [1 1 1 2 2 2 3 3 3] ''' |
2.ndarray元素存取
1.使用”[ ]”运算符
符号 | 作用 |
---|---|
[,] | 维度的分隔符 |
[:] | 表示这一维取全部,相当于0:len |
[x] | 表示取下标为x的 |
[-x] | 表示取从后向前下标为x的 |
[:b] | 表示从开头取到b(不包括b),相当于0:b |
[a:] | 表示从a取到结尾(包含a),相当于a:len |
[a:b] | 取下标为[a,b)的 |
[[a,b]] | 取下标为a和b的 |
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 44 45 46 47 48 49 50 51 |
import numpy as np nd1 = np.arange(25).reshape([5, 5]) print(nd1) ''' [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19] [20 21 22 23 24]] ''' print(nd1[1, 1]) ''' 6 ''' print(nd1[1]) # 等价于nd1[1, :],取某行 ''' [5 6 7 8 9] ''' print(nd1[:, 1]) # 取某列,:表示在这个维度取全部, ''' [ 1 6 11 16 21] ''' print(nd1[:, 1:2]) # 注意和上面区分,这行代码得到的结果是二维的,而nd1[:, 1]是一维的 ''' [[ 1] [ 6] [11] [16] [21]] ''' print(nd1[:, [1, 3]]) # 截取指定的列,如1、3两列 ''' [[ 1 3] [ 6 8] [11 13] [16 18] [21 23]] ''' print(nd1[[1, 3], 1:3]) # 截取1、3两行1、2两列的元素 ''' [[ 6 7] [16 17]] ''' |
2.使用np.where函数
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import numpy as np ''' np.where(condition, x=None, y=None) 如果condition为True则从x中选择元素,否则从y中选择元素 ''' a = np.arange(10) c = np.where(a % 2 == 1, -1, a) print(c) ''' [ 0 -1 2 -1 4 -1 6 -1 8 -1] ''' |