项目实训写实记录No.1

Python环境配置(Anaconda+Pycharm)

1. 安装anaconda

下载:
清华镜像下载: link
在这里插入图片描述
找到自己需要的版本下载到本地一路next安装

2.增加Anaconda中国镜像

Cmd中输入命令 conda config --set show_channel_urls yes
生成用户目录下的.condarc文件
使用记事本打开,添加内容
channels:

  • defaults
    show_channel_urls: true
    channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
    default_channels:
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2

custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

3.创建虚拟环境

cmd命令行中输入:conda create -n 环境名称 python=python版本

4.安装模块库

conda install 库名

numpy库使用

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
使用前需要下载并导入numpy

1.创建数组

分别创建下列形式的一维数组:
[3 6 5 2 7]
[0. 0. 0. 0. 0.]
[1. 1. 1. 1. 1.]
[3. 3. 3. 3. 3.]

  • 使用array方法直接初始化数组元素
  • 使用zeros, ones, full方法
  • 注意数组中每个元素默认的数据类型
import numpy as np
a1 = np.array([3, 6, 5, 2, 7])
size = 5
a2 = np.zeros(size)
a3 = np.ones(size)
a4 = np.full(size, 3.0)

通过下列代码将list(可以是一维,也可以是多维)转换成array:
a2 = [1,2,3,4,5]
a2 = np.array(a1)

使用区域分割方法生成序列

arange 提供了根据指定范围 (min, max) 和间隔 (step) 来生成序列的方法

  • arange 中指定范围时,序列中将包含左侧边界值(最小值),不包含右侧边界值(最大值),也即:[min, max)

a3 = np.arange(1, 20, 2)

已知:
a1 = np.array([1,2,3,4,5])
a2 = a1
a1[0] = 100
则此时a2[0]=?

  • *=*运算符将使等号左右两边的数组变量指向同一块数据内存
  • copytocopyarray函数都将产生一个新的数据块拷贝,这将导致即使修改了原始数组数据(a1),也不会影响新数组中的数据(a2,a3,a4)

2.数组维度

与数组维度和大小有关的函数和属性

  • len函数总是返回数组第一个维度的大小
  • shape属性返回数组每个维度的大小,使用一个tuple来代表;对于一维数组,shape属性仅记录了一个维度大小
  • size属性用于记录元素总个数
  • itemsize属性记录了每个元素所占字节数

使用正数下标索引访问一维数组中的元素
数组元素:[0 10 20 30 40 50 60 70 80 90]
                  
                     ↓ \downarrow   ↓ \downarrow   ↓ \downarrow   ↓ \downarrow   ↓ \downarrow   ↓ \downarrow   ↓ \downarrow   ↓ \downarrow   ↓ \downarrow   ↓ \downarrow
下标索引: 0   1   2   3   4   5   6   7   8   9  

  • 下标索引从 0 0 0开始编号
  • 使用 [start🔚step] 的形式从数组中取出部分元素(切片):从下标为 start 的元素开始,到下标为 end-1 的元素结束,每次移动 step 个元素
  • 如果不明确指定 start , endstep,则 s t a r t = 0 start=0 start=0, e n d = l e n ( a ) end=len(a) end=len(a), s t e p = 1 step=1 step=1

访问二维数组/矩阵中的部分数据(切片)

  • 行、列下标可以采用与一维数组类似的方式进行处理
  • 如果最终的切片结果只有一行或一列,则该结果将被转成一个一维数组

a= np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]])
print(a[0:2,2:5]) # 行下标0,1行,列下标2,3,4列
print(a[:, 2:5]) # 行下标所有行,列下标2,3,4列
print(a[:,3]) # 行下标所有行,列下标为3的列。注意,因为最终只返回了1列,因此该列数据被转换成一维数组
print(a[1,:]) # 行下标为1的行,列下标所有列。注意,因为最终只返回了1行,因此改行数据被转换成一维数组
print(a[1]) # 如果省略了列维度,则默认取所有列

3.数组元素筛选

3.1直接给定下标索引

a = np.array([4, 3, 5, 7, 6, 8])
indices = [0, 1, 4] # 指定返回索引为0,1,4的三个元素
b = np.take(a, indices)
c = a[indices] # a[[0,1,4]]

3.2基于元素值间接给定下标索引

b = np.nonzero(a) # 非零元素的索引组成的一维数组
c = np.where(a>0)

3.3基于True/False条件返回对应的元素

a = np.arange(5) # [0,1,2,3,4]
b = np.array([True, False, False, True, True])
print(a[b])

4 数组元素查找与统计

4.1数组极值

一维数组极值

  • np.maxnp.min用于查找最大值和最小值
  • np.argmaxnp.argmax用于查找极值元素对应的下标索引

二维数组极值

  • 设置axis=0,表示沿着竖直方向(行索引增长的方向),为每一列分别查找极值(一维数组,长度为原二维数组列数)
  • 设置axis=1,表示沿着水平方向(列索引增长的方向),为每一行分别查找极值(一维数组,长度为原二维数组行数)
  • 不设置axis时,将查找整个数组中的极值元素(单个值,标量)

统计一维和二维数组中的非零元素个数

  • np.count_nonzero
  • 通过设置axis参数,可以计算每列或每行的非零元素个数

5.数组排序

5.1一维数组排序

升序和降序排列

  • sort只能升序排列,如果需要降序,可以再倒序

5.2二维数组排序

按行或案列排序

  • 指定axis=0,表示沿竖直方向(行索引增加的方向),对每一列分别排序
  • 指定axis=1,表示沿水平方向(列索引增加的方向),对每一行分别排序
  • 未指定axis时,行为等同于axis=1

6数组元素增删

使用np.delete删除一维数组中的元素

  • 删除指定索引位置处的元素
  • 可以删除一个或多个位置处的元素。如果是删除多个位置,则这些位置是参照原始数组(而不是删除了某个元素之后的数组)的位置
  • 删除后的数组是原始数组的拷贝,不会共享数据内存

删除二维数组中的元素

  • 如果不指定axis,则将二维数组展成一维数组,然后删除指定位置的元素。返回的数组已经变成了一维数组
  • 设置axis=0,表示沿竖直方向(行索引增加方向)删除指定索引位置的元素,此时实际上删除的是一行
  • 设置axis=1,表示沿水平方向(列索引增加方向)删除指定索引位置的元素,此时实际上删除的是一列

在一维数组末尾追加元素

  • np.append方法
  • 可以追加1个或多个元素
  • 追加操作不会修改原来的数组,而是拷贝生成一个新数组

二维数组末尾追加元素

  • 如果不指定axis,则将二维数组展成一维数组,并在最后追加数据
  • 设置axis=0,可追加行。应确保追加的数据与原始数据具有相同的列数
  • 设置axis=1,可追加列。应确保追加的数据与原始数据具有相同的行数

7.数组拼接与拆分

  • np.concatenate函数,通过指定axis=0,将两个数组沿竖直方向(行索引增长的方向)组合拼接
  • np.vstack函数。按照竖直(vertical)方向拼接
  • 将要拼接的数组放在一个tuple中,并且这些数组应具有相同的列数
  • 支持多个数组的拼接
  • 拼接后的数组与原来的数组不共享数据内存
  • np.concatenate函数,通过指定axis=1,将两个数组沿水平方向(列索引增长的方向)组合拼接
  • np.hstack函数。按照水平(horizontal)方向拼接
  • 拼接的数组应具有相同的行数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值