• 【MindSpore易点通】数据处理之NumPy练习--初级篇


    NumPy使用--初级练习

    简述:在之前几篇的分享中,我们了解了NumPy的一些基础使用。本次为掌握NumPy的更多用法和提升熟悉程度,本篇列举了33个初级题目进行练习,配有代码。后续还会有中级和高级题目。

    1.导入numpy模块,设置别称为np

    import numpy as np
    复制

    2.显示numpy的版本号和配置文件

    1. import numpy as np
    2. print(np.__version__)
    3. np.show_config()
    复制

    3.创建一个大小为10的空向量

    1. import numpy as np
    2. print(np.empty(10)) #使用empty()函数直接创建
    复制

    4.查看数组占用内存大小

    1. import numpy as np
    2. cx_1 = np.empty((3,2),np.uint32)
    3. cx_2 = np.empty((3,2),np.float16)
    4. print(cx_1.itemsize * cx_2.size) #itemsize表示数组中每一个元素所占空间的大小
    5. print(cx_2.itemsize * cx_1.size) #size返回值表示数组的大小
    复制

    5.查看numpy中add函数的用法

    1. import numpy as np
    2. print(np.info(np.add)) #也可使用info()查看numpy中其他函数的用法
    复制

    6.创建一个大小为10的空向量,将第5个值设为1

    1. import numpy as np
    2. cx = np.zeros(10) #使用zeros()函数创建空向量
    3. cx[4] = 1 #通过下标修改值
    4. print(cx)
    复制

    7.用10到49的序列构建一个向量

    1. import numpy as np
    2. cx = np.arange(10,50) #使用arange()函数传入范围创建向量
    3. print(cx)
    复制

    8.将一个数组变换倒序(最后一个元素成为第一个元素)

    1. import numpy as np
    2. cx = np.arange(1,10)
    3. print(cx)
    4. cl = cx[::-1] #使用切片方法并使用-1进行倒序
    5. print(cl)
    复制

    9.用0-8这9个数构造一个3x3大小的矩阵

    1. import numpy as np
    2. cx = np.arange(0,9).reshape(3,3) #arange()自带reshape()可设置矩阵大小
    3. print(cx)
    复制

    10.从数组[1,2,0,0,4,0]中找出非0元素的下标

    1. import numpy as np
    2. cx = [1,2,0,0,4,0]
    3. print(np.nonzero(cx)) #使用nonzero()得出非0下标
    复制

    11.创建3x3的对角矩阵

    1. import numpy as np
    2. print(np.identity(3)) #identity()只能创建行列相等的矩阵,对角线上为1,其余元素为0
    3. print(np.eye(3,3,0)) #eye()可自定义矩阵行列和对角线位置
    复制

    12.用随机数创建一个3x3x3的矩阵

    1. import numpy as np
    2. print(np.random.random((3,3,3))) #使用random()传入矩阵大小
    复制

    13.创建一个10x10的随机数矩阵,并找到最大值和最小值

    1. import numpy as np
    2. cx = np.random.random((10,10))
    3. print(cx,cx.max(),cx.min()) #使用max()、min()找到
    复制

    14.创建一个大小为30的数组,并计算其算术平均值

    1. import numpy as np
    2. cx = np.random.random((30))
    3. print(cx,cx.mean()) #使用mean()求得
    复制

    15.创建一个二维数组,边为1,其余为0

    1. import numpy as np
    2. cx = np.ones((6,6))
    3. print(cx)
    4. cx[1:-1,1:-1] = 0 #切片改变矩阵四边的元素值
    5. print(cx)
    复制

    16.扩展给定数组的边界

    1. import numpy as np
    2. cx = np.ones((6,6))
    3. print(np.pad(cx,2,mode='constant',constant_values=0)) #使用pad()进行扩展
    复制

    17.指出下列表达式的结果是什么?

    1. import numpy as np
    2. print(0 * np.nan) #nan 有nan参与的运算,其结果也一定是nan
    3. print(np.nan == np.nan) #False nan不是数,所以无法进行比较运算
    4. print(np.nan in set([np.nan])) #True nan在nan的字典中
    5. print(0.3 == 3 * 0.1) #False 浮点数可以比大小,但相等要用math.isclose比较
    6. import math
    7. print(math.isclose(0.3, 3 * 0.1)) #True
    复制

    18.用1,2,3,4做为对角线的下移一行,来创建5x5的矩阵

    1. import numpy as np
    2. cx = np.diag([1,2,3,4],-1) #diag()可指定对角线位置的值,并控制上下移动
    3. print(cx)
    复制

    19.创建一个类似国际象棋棋盘的8x8的矩阵

    1. import numpy as np
    2. cx = np.zeros((8,8))
    3. cx[::2,::2] = 1
    4. cx[1::2,1::2] = 1 #切片改变不同位置的值
    5. print(cx)
    复制

    20.对一个6x7x8的数组,找出第100个元素的下标

    1. import numpy as np
    2. print(np.unravel_index(100,(6,7,8))) #向unravel_index()传入要找元素的第x个和矩阵形状
    复制

    21.使用tile函数创建一个棋盘

    1. import numpy as np
    2. print(np.tile([[0, 1], [1, 0]], (4, 4))) #tile()将传入的第一个参数当作一个元素,再次创建
    复制

    22.归一化一个5x5的随机矩阵

    1. import numpy as np
    2. cx = np.random.random((5,5))*10
    3. print(cx)
    4. print(cx - cx.mean() / cx.std()) #使用值减去平均值,再除以标准偏差的方法归一
    复制

    23.自定义一个用 unsigned bytes 表示RGBA颜色的dtype类型

    1. import numpy as np
    2. print(np.dtype([('R', np.ubyte), ('G', np.ubyte), ('B', np.ubyte), ('A', np.ubyte)]))
    复制

    24.计算5x3和3x2矩阵的内积(点乘)

    1. import numpy as np
    2. cx_1 = np.random.randint(0,9,(5,3))
    3. cx_2 = np.random.randint(0,9,(3,2))
    4. print(np.dot(cx_1,cx_2)) #使用dot()计算两个矩阵的内积
    5. print(cx_1 @ cx_2)
    复制

    25.把一维数组中大于3小于8的所有元素变成对应负数

    1. import numpy as np
    2. cx = np.arange(1,13)
    3. cx[(cx > 3) & (cx<8)] *= -1 #并行条件找到并修改元素值
    4. print(cx)
    复制

    26.指出下列程序的输出?

    1. print(sum(range(5), -1)) # 9
    2. from numpy import *
    3. print(sum(range(5), -1)) # 10
    复制

    27.对于整数向量,下面的哪些表达式是合法的?

    1. import numpy as np
    2. cx = np.array(13)
    3. print(cx**cx) # True
    4. print(2 << cx >> 2) # False
    5. print(cx <- cx) # True
    6. print(1j*cx) # True
    7. print(cx/1/1) # True
    8. print(cx<cx>cx) # False
    复制

    28.下面的表达式的结果是?

    1. import numpy as np
    2. print(np.array(0) / np.array(0)) # nan
    3. print(np.array(0) // np.array(0)) # 0
    4. print(np.array([np.nan]).astype(int).astype(float)) # -2.14748365e+09
    复制

    29.对于浮点数数组取整?

    1. import numpy as np
    2. cx = np.random.uniform(-10,+10,10) #创建值在(-10,+10)的10个元素的数组
    3. print(np.copysign(np.ceil(np.abs(cx)),cx)) #abs()将所以元素取正;ceil()将所以元素取整;copysign()根据原数组改变当前数组的正负值
    复制

    30.查找两个数组的交集?

    1. import numpy as np
    2. cx_1 = np.random.randint(0,10,10)
    3. cx_2 = np.random.randint(0,10,10)
    4. print(np.intersect1d(cx_1,cx_2)) #intersect1d()比较两个矩阵,找到交集
    复制

    31.忽略numpy的警告?

    1. import numpy as np
    2. defaults = np.seterr(all="ignore") #忽略所有警告
    3. cx = np.ones(1) / 0
    复制

    32.下列表达式结果为真么?

    1. import numpy as np
    2. print(np.sqrt(-1) == np.emath.sqrt(-1)) # False
    复制

    33.获取今天,昨天,明天的日期?

    1. import numpy as np
    2. yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
    3. today = np.datetime64('today', 'D')
    4. tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
    5. print(yesterday,today,tomorrow)
    复制

    总结:以上是本篇NumPy的初级使用,更多复杂的操作也可以通过多个简单的操作组合完成,欢迎大家尝试或者补充更好的方法。中级篇和高级篇正在准备中,还请期待~

  • 相关阅读:
    用rabbitMq 怎么处理“延迟消息队列”?
    STM32和ESP32哪个更适合初学者
    新手期货开户的时候需要准备什么呢?
    机器学习是什么
    Android开发笔记(一百八十九)利用LAME录制MP3音频
    Java手写HashMap及拓展实践
    js 数组去重
    双动子大理石高速直线模组在检测设备中的应用
    c++day2
    软件产品(确认)有效性测试的作用和流程
  • 原文地址:https://blog.csdn.net/weixin_45666880/article/details/126777549