环境安装

anaconda 安装 ,conda : python 多版本控制

 1# 查看环境
 2conda env list
 3# 创建环境 ,最新的 python 
 4conda create --name myenv 
 5# 指定 3.10 python 版本
 6conda create -n myenv3.10 python=3.10
 7# 激活
 8conda activate myenv3.10
 9# 删除环境
10conda remove --name myenv3.10 --all
11# 克隆环境
12conda create --name cpname --clone oldname
13pip list 
14conda list

pycharm 配置conda环境。

 1pip install jupyter
 2# 浏览器会打开 jupyter notebook  
 3# 在需要打开的项目中 执行。 
 4jupyter notebook 
 5# 数据分析包,  可以处理表格数据
 6pip install pandas 
 7# 绘图包 
 8pip install matplotlib
 9#  图像处理库, 视频处理
10pip install opencv-python 
11# 安装dataspell, 操控jupyter .

NumPy

它是 Python 进行数值计算的一个类库,用来计算、处理高阶矩阵和数组。和 Math、Time 库一样,NumPy 是 Python 中的一个扩展库,提供了 Python 原生所不具备的多维数组对象(类似生活中使用的表格)。另外,NumPy 还有线性代数中的矩阵运算功能等,这为科研和实际工作都带来了不少的便捷。

特定: 底层基于 c 实现比 python 实现同样的功能快数十倍。

Numpy 的数据类型主要分为以下几种。

  • 整数类型:包括 int8、int16、int32、int64,这些类型分别表示 8 位、16 位、32 位、64 位的带符号整数。
  • 浮点类型:包括 float16、float32、float64,这些类型分别表示 16 位、32 位、64 位的浮点数。
  • 复数类型:包括 complex64、complex128,这些类型分别表示 64 位和 128 位的复数。
  • 布尔类型:即 bool_,它只有两个取值:True 和 False。
  • 字符串类型:即 str_,用于存储字符串。

Numpy 中的数组——ndarray

ndarray 对象分为两个部分:一个部分是 header、一个是 data。header 部分可以理解为数组属性块,里面有着 ndarray 数组对象所需要的一些属性,比如该数组的步长、数组的形状、数组中数据的类型,等等。data 部分就可以理解为 C 语言中的数组了,存储的是数据。

numpy常用操作

  • zeros 方法创建全 0 数组 , ones 方法创建全 1 数组

    • 不管是 0 填充还是 1 填充,默认的数据类型都是为浮点数
  • empty 方法创建未初始化数组

    • empty 方法是用来创建一个指定形状、指定数据类型并且未初始化的数组。未初始化指的就是对于其中的数据并没有被指定填充值。
  • eye 方法创建对角数组

  • 从现有数组中生成新数组

    • 利用现有数组生成新数组的方式大概有三种方法,分别为 array 方法、asarray 方法以及 copy 方法
      • 方法:numpy.array(object,dtype,shape)
        1object 为要转化为 Numpy 数组的数据对象,可以为列表、元组或者数组;
        2dtype 为转化后数组的数据类型,若不设置则与原数据对象的数据类型保持一致;
        3shape 用于指定数组的形状,若不设置则与原数据对象的 shape 相同。  
        
    • 方法:numpy.asarray(object,dtype)
      1 object 为要转化为 Numpy 数组的数据对象,可以为列表、元组或者数组;
      2 dtype 为转化后数组的数据类型,若不设置则与原数据对象的数据类型保持一致。
      
  • linspace 方法

    • 方法:linspace(start,stop,num)
    • start 为数据的起始点。
    • stop 为数据的结束点。
    • num 为等步长生成的数据量。
  • arange 方法

    • 方法:arange(start,stop,step,dtype)
    • start 为数据起始点。
    • stop 为数据终点。
    • step 为数据之间的步长,默认为 1。
    • dtype 用于指定数组的数据类型,默认为浮点型。
  • 均匀分布随机数组

    • 生成均匀分布随机数组主要有 rand 方法和 uniform 两种方法。
  • 正态分布随机数组

    • normal(loc,scale,size)
      • loc 为正态分布数组的均值,
      • scale 为数组的方差,
      • 通过 size 属性我们能够设置数组的形状或者数据量。
    • standard_normal(size)
      • 利用 standard_normal 方法用于生成指定形状的符合标准正态分布的数组
      • size 为随机数组的形状。
  1import numpy as np
  2
  3a = np.arange(15).reshape(3, 5)
  4print("数组的维度:", a.shape)
  5print("数组轴的个数:", a.ndim)
  6print("数组元素类型:", a.dtype)
  7print("数组中每个元素的字节大小:", a.itemsize)
  8print("数组元素的总个数:", a.size)
  9print("类型查询:", type(a))
 10
 11# 创建一个数组
 12b = np.array([6, 7, 8])
 13print("数组b:", b)
 14print("数组b类型:", type(b))
 15
 16a = np.array([2, 3, 4])
 17print("数组a元素类型:", a)
 18print("数组a类型:", a.dtype)
 19
 20b = np.array([1.2, 3.5, 5.1])
 21print("数组b元素类型:", b.dtype)
 22
 23# zeros 方法创建全 0 数组
 24zeros1 = np.zeros((3, 4))
 25print("数组zeros1:", zeros1)
 26
 27# ones 方法创建全 1 数组
 28ones1 = np.ones((2, 3, 4))
 29print("数组ones1:", ones1)
 30
 31# empty 方法创建未初始化数组 为了程序的安全,未初始化的变量程序会根据编译器的设置填充一些值,比如这里的随机值。
 32empty1 = np.empty((2, 3))
 33print("数组empty1:", empty1)
 34
 35# eye 方法创建对角数组,创建一个五行五列的对角矩阵
 36eyeArry=np.eye(5)  
 37print(eyeArry)
 38
 39
 40
 41np_arange = np.arange(10, 20, 5, dtype=int)
 42print("arange创建np_arange:", np_arange)
 43print("arange创建np_arange的元素类型:", np_arange.dtype)
 44print("arange创建np_arange的类型:", type(np_arange))
 45
 46# matrix 是 ndarray 的子类,只能生成 2 维的矩阵
 47x2 = np.matrix("1,2;3,4")
 48print(x2)
 49x3 = np.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
 50print(x3)
 51
 52# 生成指定维度大小(3行4列)的随机多维浮点型数据(二维),rand固定区间0.0 ~ 1.0
 53arr = np.random.rand(3, 4)
 54print(arr)
 55print(type(arr))
 56
 57# 生成指定维度大小(3行4列)的随机多维整型数据(二维),randint()可以指定区间(-1, 5)
 58arr = np.random.randint(-1, 5, size=(3, 4))
 59print(arr)
 60print(type(arr))
 61
 62# 生成指定维度大小(3行4列)的随机多维浮点型数据(二维),uniform()可以指定区间(-1, 5)产生-1到5之间均匀分布的样本值
 63# uniform(low,high,size)
 64arr = np.random.uniform(-1, 5, size=(3, 4))  #
 65print(arr)
 66print(type(arr))
 67
 68# 初始化3行4列数组,数据类型为float64
 69zeros_float_arr = np.zeros((3, 4), dtype=np.float64)
 70print(zeros_float_arr)
 71print(zeros_float_arr.dtype)  # float64
 72
 73# astype转换数据类型,将已有的数组的数据类型转换为int32
 74zeros_int_arr = zeros_float_arr.astype(np.int32)
 75print(zeros_int_arr)
 76print(zeros_int_arr.dtype)  # int32
 77
 78# randn() 返回具有标准正态分布的序列。
 79arr = np.random.randn(2, 3)
 80
 81print(arr)
 82
 83print(np.ceil(arr))
 84
 85print(np.floor(arr))
 86
 87print(np.rint(arr))
 88
 89print(np.isnan(arr))
 90
 91print(np.multiply(arr, arr))
 92
 93print(np.divide(arr, arr))
 94
 95print(np.where(arr > 0, 1, -1))
 96
 97arr = np.arange(12).reshape(3, 4)
 98
 99print(arr)
100
101print(np.cumsum(arr))  # 返回一个一维数组,每个元素都是之前所有元素的 累加和
102
103print(np.sum(arr))  # 所有元素的和
104
105print(np.sum(arr, axis=0))  # 数组的按列统计和
106
107print(np.sum(arr, axis=1))  # 数组的按行统计和
108
109# 比较函数
110# np.any(): 至少有一个元素满足指定条件,返回True
111# np.all(): 所有的元素满足指定条件,返回True
112
113
114arr = np.random.randn(2, 3)
115
116print(arr)
117
118print(np.any(arr > 0))
119
120print(np.all(arr > 0))
121
122# 去重 np.unique():找到唯一值并返回排序结果,类似于Python的set集合    [1 2 3 4]
123arr = np.array([[1, 2, 1], [2, 3, 4]])
124print(arr)
125print(np.unique(arr))
126
127# 数据排序
128
129arr = np.array([1, 2, 34, 5])
130print("原数组arr:", arr)
131
132# np.sort()函数排序,返回排序后的副本
133sortarr1 = np.sort(arr)
134print("numpy.sort()函数排序后的数组:", sortarr1)
135
136# ndarray直接调用sort,在原数据上进行修改
137arr.sort()
138print("数组.sort()方法排序:", arr)
139
140# 矩阵乘法
141x = np.array([[1, 2, 3], [4, 5, 6]])
142y = np.array([[6, 23], [-1, 7], [8, 9]])
143
144print(x)
145print(y)
146
147print("------")
148print(x.dot(y))
149
150print("------")
151print(np.dot(x, y))
152
153a = np.array([[1, 2, 3], [4, 5, 6]])
154b = np.array([[2, 2, 2], [3, 3, 3]])
155print("--------")
156print(a * b)