• Numpy基础代码学习


    一.前情提要

    1.本文是代码结合知识点注释即为知识点

    2.主要详细讲解numpy部分基础知识

    3.若想深入学习,建议阅读

    【python教程】数据分析——numpy、pandas、matplotlib_哔哩哔哩_bilibili

    二.笔记/代码

    ①基本组

    #重在数值计算
    import random

    #补充: random.randint(a, b):返回一个在指定范围[a, b]内的随机整数。
    # random.uniform(a, b):返回一个在指定范围[a, b]内的随机浮点数,可以包括a和b。
    # random.choice(seq):从序列seq中随机选择一个元素返回。
    # random.shuffle(seq):将序列seq中的元素随机排序。
    # random.random()函数返回一个0到1之间的随机浮点数,包括0但不包括1。

    #引用numpy
    import numpy as np

    #使用numoy生成数组,得到ndarray的类型
    t1=np.array([1,2,3],dtype=float)
    #改变数据类型eg: t3=np.array([1,1,0,0,1],dtype=bool)

    t2=np.arange(4,10,2)#arange效果等于array(range(10)),2是步长

    print(t1.dtype)#检测t1内部的数据类型

    #调整数据类型
    t4=t1.astype('int8')

    #numpy中的小数
    t5=np.array([random.random() for i in range(10)])
    t6=np.round(random.random(),2)#2是保留两位小数

    ②数值修改

    import numpy as np
    frame=''
    t2=np.loadtxt(frame,dtype='int',delimiter=',',unpack=True)
    #直接修改值
    t2[2,2:4]=0

    # frame:一个字符串,指定要加载的文件路径或文件名。
    # dtype='int':一个可选的参数,指定要加载的数据的类型。在这里,数据被指定为整数类型。
    # delimiter=',':一个可选的参数,指定数据文件中的分隔符。在这里,数据文件使用逗号作为分隔符。
    # unpack=True:一个可选的参数,如果设置为True,则将加载的数据以行为单位进行解压缩,即每一行的数据将存储在一个单独的数组中。
    # 通过使用t2[2,2:4] = 0语句,直接修改了加载的数据。这条语句将t2数组的第三行(索引为2)的第三列到第四列(索引为2到3)的元素值设置为0。

    #将<10的值替换为3
    t2<10#得出的结果是布尔值
    #替换方法
    t2[t2<10]=3

    #将<3的值替换为0,其余的替换为10
    t2.np.where(t2<=3,0,10)

    #将<10的值替换为10,>20的替换为20
    t2.clip(10,20)

    #nan是浮点类型
    t2=t2.astype(float)#先将t2转化为浮点类型
    t2[3,3]=np.nan

    ③数组形状

    import numpy as np
    t1=np.array([0,1,2,3,4,5,6])
    print(t1.shape)#shape查看是几维的

    t2=np.range(12)
    t2.reshape((3,4))#改变t2为3行4列,内部为元组格式

    t3=np.arange(24).reshape(2,3,4)#2为2块

    t4=t3.reshape((t3.shape[0]*t3.shape[1]))
    # t3.shape[0] t3的行, t3.shape[1]t3的列

    t3.flatten()#直接将t3展开为一元的

    t1+2#会把2加给t1所有的值

    #维度相同时,每个数值对应相加
    t5=np.arange(0,24).reshape((4,6))
    t6=np.arange(100,124).reshape((4,6))
    t5+t6

    #维度不完全相同时(行和列至少一种相同)
    t5=np.arange(0,24).reshape((4,6))#4行6列
    t7=np.arange(0,6)#1行6个数
    t5-t7
    #此时t5每一行分别与t7这一行计算
    #shape(3,3,2)可以和shape(3,2)计算,shape(3,3,2)也可以和shape(3,3)计算

    ④文件导入

    import numpy as np
    frame=''
    t1=np.loadtxt(frame,dtype='int',delimiter=',',unpack=False)
    t2=np.loadtxt(frame,dtype='int',delimiter=',',unpack=True)
    #此时t1和t2数据按照东南45°对角线翻折即行变成列,列变成行

    #数组的转置
    # #列表逆时针反转九十度
    t2=np.arange(24).reshape(4,6)
    t2.transpose()

    ⑤索引和切片

    import numpy as np
    frame=''
    t2=np.loadtxt(frame,dtype='int',delimiter=',',unpack=True)
    print(t2[2])#取谋一行直接在[]内取值

    #取连续多行
    print(t2[2:])

    #取不连续多行
    print(t2[2,8,10])

    #取行和列
    print(t2[[1,8],:])#,前是行,后是列

    #取列
    print(t2[:,0])#0是第一列

    #取连续的多列
    print(t2[:,2::2])#第二个冒号是步长

    #取不连续多列
    print(t2[:,[0,2]])

    #取行列,比如3行4列
    a=t2[2,3]
    print(a)

    #取多行多列,比如3行到5行 ,第2列到第4列
    print(t2[2:5,1:4])

    #取多个不相邻的点
    c=t2[[0,2,2],[0,1,3]]#0与0对应一个值,2与1对应一个值一次类推
    #结果是(0,0)(2,1)(2,3)
    print(c)

    ⑥维度笔记

    #一.基本定义
    #计算不同维度的值
    #二维行是axis=0,列是axis=1
    #三维二维行是块是axis=0,axis=1,列是axis=2

    #二.numpy读取数据,格式
    #import numpy as np
    #t1=np.loadtxt(frame,dtype=np.float,delimiter=None,,usecols=None,unpack=False)
    #注释:frame文件,字符串或产生器.dtype数据类型.delimiter分割字符.
    # skiprows跳过前x行.usecols读取指定列,索引,元组类型。unpack是否旋转

    import numpy as np
    frame=''
    t1=np.loadtxt(frame,dtype='int',delimiter=',',unpack=False)
    t2=np.loadtxt(frame,dtype='int',delimiter=',',unpack=True)
    #此时t1和t2数据按照东南45°对角线翻折即行变成列,列变成行

    #数组的转置
    # #列表逆时针反转九十度
    t2=np.arange(24).reshape(4,6)
    t2.transpose()
    #或者t2.T#
    #t2.swapaxes(1,0)交换0轴1轴

    三.最后提示

    1.本文主要按小节来,如有相关章节笔记不明显,不妨往后看看?

    eg:不知道⑤中 frame='' 的含义不妨看看⑥中的

    #二.numpy读取数据,格式
    #import numpy as np
    #t1=np.loadtxt(frame,dtype=np.float,delimiter=None,,usecols=None,unpack=False)
    #注释:frame文件,字符串或产生器.dtype数据类型.delimiter分割字符.
    # skiprows跳过前x行.usecols读取指定列,索引,元组类型。unpack是否旋转

  • 相关阅读:
    JavaCV的摄像头实战之八:人脸检测
    Comparator 和 Comparable比较
    风控系统之数据服务,名单、标签、IP、设备、地理信息、征信等
    2019CCF非专业级别软件能力认证第一轮
    华为---RSTP(四)---RSTP的保护功能简介和示例配置
    【C#版本】微信公众号模板消息对接(一)(图文详解)
    weserver发布地图服务
    第2章 MyBatis的核心配置
    元数据管理-解决方案调研二:元数据管理解决方案——早期传统解决方案
    动画设计岗位怎么运用智能程序分析数据更清晰
  • 原文地址:https://blog.csdn.net/omit250/article/details/137255496