一、NumPy库
二、Numpy库核心——ndarray
1.初识ndarray
2.ndarray的属性和方法
三、ndarray 运算
1.ndarray 矩阵运算
2.ndarray 通用函数计算
3.ndarray 基础统计方法
四、ndarray 切片与索引
1.基础切片与索引
2.布尔值索引
五、ndarray 删除操作
六、ndarray 合并操作
七、NumPy 其他常用函数或方法
1.一维数组生成函数
2.多维数组生成函数
3.随机数生成

一、导入Numpy库

  1. import Numpy as np

array

保存同类数据的容器,特别是支持矩阵(列表,元组不可以)

创建一个ndarray对象

  1. c = np.array([1, 2, 3, 4, 5])

image.png

创建一个ndarray的矩阵对象

  1. d = [[1, 2 ,3], [4, 5, 6]]
  2. e = np.array(d)
  3. e

image.png

元组在ndarray中的特殊性

  1. g = np.array([1,None, 3, 'bo', (1,2)])
  2. g[-1] = 1 报错 #因为最后一个位置是元组
  3. g[1] = 1 成功

备注:

  1. 元组,一种固定长度的,不可变的python对象序列
  2. 列表,长度可变的,内容可修改的序列
  3. ndarray,高效多维同类数据容器,支持矩阵

二、NumPy 数据类型:

  1. int8/int16/int32——整数类型
  2. float16/float32/float64/float128——浮点数类型
  3. object——object类型
  4. bool——布尔值类型
  5. string_——字符串类型
  6. unicode_——unicode类型
  7. complex64/complex128/complex256——复数类型

ndarray 的属性和方法

shape

返回形状

  1. d = [[1, 2 ,3], [4, 5, 6]]
  2. e = np.array(d)
  3. e.shape

image.png 2行3列

reshape

改变形状

  1. e_ = e.reshape(3, 2)
  2. e

image.png

但是要注意 前后中变化括号的乘积要一样

  1. e_ = e.reshape(4, 2)

报错: image.png

dtype

查看数据类型
  1. e.dtype

image.png

ndim

返回维度,就是几个方括号

image.png

  1. e.ndim

image.png

  1. e.reshape(2,1,3)

image.png

返回2行1列,每行3个元素

astype

就是转换numpy数组的数据类型

  1. e_int8 = e.astype("int8")
  2. e_int8

image.png

最后一个dtype改变了(数据类型会影响精度)

三、ndarray 运算

相比列表的加法

列表加法是拼接

  1. a = [1, 2, 3]
  2. b = [4, 5, 6]
  3. a + b

image.png

ndarray是对应位置相加(包括减乘除)

  1. a_ = np.array(a)
  2. b_ = np.array(b)
  3. a_ + b_

image.png

ndarray 通用函数计算

一元通用函数:接收一个ndarray对象,并进行逐元素操作

每个位置求平方

  1. np.square(a)

image.png

开根号

  1. np.sqrt(a_)

image.png

二元通用函数:接收两个ndarray对象,并进行计算操作

对应位置相加

  1. a_=array([1, 2, 3])
  2. b_=array([4, 5, 6])
  3. np.add(a_,b_)

image.png

对应的平方

  1. np.multiply(a_,b_)

image.png

ndarray 基础统计方法

  1. e = array([[1, 2, 3],
  2. [4, 5, 6]])

axis参数

  1. e.sum(axis = 0) #按照列相加

image.png

  1. e.sum(axis = 1)

image.png

argmin argmax 返回最大(小)的索引位置

image.png

四、 ndarray 切片与索引

1. 基础索引与切片

  1. a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
  2. a_ = a.reshape(4,4)
  3. a_
  4. output:
  5. array([[ 1, 2, 3, 4],
  6. [ 5, 6, 7, 8],
  7. [ 9, 10, 11, 12],
  8. [13, 14, 15, 16]])
  1. a[4] #取第五个元素
  2. output:
  3. 5

操作行或列

  1. a_[:2] #取出前两行
  1. a_[:2] #取出前两列 性质(左开右闭)

image.png

同时操作行和列

抖号前面是对行操作,后面是对列操作

  1. #选择全部行 以及前2列
  2. a_[:,:2]
  3. output:
  4. array([[ 1, 2],
  5. [ 5, 6],
  6. [ 9, 10],
  7. [13, 14]])
  8. #选择前2行2列
  9. a_[:2,:2]
  10. output:
  11. array([[1, 2],
  12. [5, 6]])

2. 布尔值索引

  1. person = np.array(["A","B","C","D","E","F","G"])
  2. group = np.array([1, 2, 1, 1, 1, 2, 2])
  3. group == 1
  4. #根据true和false选择元素
  5. output:
  6. array([ True, False, True, True, True, False, False])
  7. person[group == 1]
  8. output:
  9. array(['A', 'C', 'D', 'E'], dtype='<U1')

五、ndarray 删除操作

  1. a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
  2. a
  3. output:
  4. array([[ 1, 2, 3, 4],
  5. [ 5, 6, 7, 8],
  6. [ 9, 10, 11, 12]])
  7. np.delete(a, 1, axis = 0) #删除第二行
  8. output:
  9. array([[ 1, 2, 3, 4],
  10. [ 9, 10, 11, 12]])

六、ndarray 合并操作

对应位置相加

  1. a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
  2. b = a
  3. a + b
  4. output:
  5. array([[ 2, 4, 6, 8],
  6. [10, 12, 14, 16],
  7. [18, 20, 22, 24]])

拼接

  1. np.concatenate((a, b),axis = 0) #按照行拼接
  2. output:
  3. array([[ 1, 2, 3, 4],
  4. [ 5, 6, 7, 8],
  5. [ 9, 10, 11, 12],
  6. [ 1, 2, 3, 4],
  7. [ 5, 6, 7, 8],
  8. [ 9, 10, 11, 12]])
  9. np.concatenate((a, b),axis = 1) #按照列拼接
  10. output:
  11. array([[ 1, 2, 3, 4, 1, 2, 3, 4],
  12. [ 5, 6, 7, 8, 5, 6, 7, 8],
  13. [ 9, 10, 11, 12, 9, 10, 11, 12]])

七、Numpy 其他常用函数或方法

1. 一维数组生成函数

arrange函数

  1. a = np.arange(10)
  2. a
  3. ouyput:
  4. array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

等分生成

  1. h = np.linspace(0, 10, 5)
  2. h
  3. output:
  4. array([ 0. , 2.5, 5. , 7.5, 10. ])

2. 多维数组生成函数

生成3行5列的全0 ndarray对象

  1. a = np.zeros((3, 5))
  2. a
  3. output:
  4. array([[0., 0., 0., 0., 0.],
  5. [0., 0., 0., 0., 0.],
  6. [0., 0., 0., 0., 0.]])

生成2行4列的全1 ndarray对象

  1. b = np.ones((2, 4))
  2. b
  3. output:
  4. array([[1., 1., 1., 1.],
  5. [1., 1., 1., 1.]])

3. 随机数生成

0到20随机生成3行5列的矩阵

  1. a = np.random.randint(0, 20, size = (3, 5)) #0到20随机生成3行5列的矩阵
  2. a
  3. output:
  4. array([[10, 2, 15, 3, 18],
  5. [19, 19, 15, 8, 3],
  6. [ 0, 9, 14, 9, 10]])

正态分布

  1. b = np.random.normal(size=(3,5))
  2. b
  3. output:
  4. array([[-0.39876998, -3.18802773, -0.59966543, -0.63054271, 0.29046826],
  5. [ 2.08228931, -1.47918602, 0.04731244, 1.06674045, 1.32635611],
  6. [ 1.16970738, 1.44315663, -2.25150722, 0.64030745, 0.12519226]])

np.random.seed

np.random.seed() 函数用于生成指定随机数。 seed() 被设置了之后, np, random.random() 可以按顺序产生一组固定 的 数组,如果使用相同 的seed() 值,则每次生成 的 随即数都相同,如果不设置这个值,那么每次生成 的 随机数不同。

np.random.permutation

随机排列一个序列,返回一个排列的序列