numpy基础教程8讲(根据b站莫烦老师)

本文通过实例介绍了使用numpy进行数组定义、维度、形状、类型、基本运算(加减乘方、三角函数)、索引、复制、矩阵操作、随机数生成、索引与切片,以及浅拷贝与深拷贝的区别。适合初学者快速上手Python数值计算。
摘要由CSDN通过智能技术生成

边听莫烦老师的课边敲下来的

以下代码稍有些乱,可以点击上面的链接观看视频,在简介有他的github链接,里面有代码,不过由于版本更新,视频中的代码有的会保存,可以参考我的改一下(2021.10不会报错)

import numpy as np


def class1():
    array1 = np.array([[1, 2, 3],
                      [4, 5, 6]])
    print(array1)
    print("维度dimension", array1.ndim)
    print("shape(几行几列)", array1.shape)
    print("size(几个元素)", array1.size)


def class2():
    a2 = np.array([1, 2, 3], dtype=np.int64)  # int int64 float32
    print(a2.dtype)
    array2 = np.zeros((3, 4))  # 生成全0 数列
    print(array2)
    array2_1 = np.ones((2, 5), dtype=np.int16)  # 生成全1 数列,其他数字可以×
    print(array2_1)
    array2_2 = np.arange(12).reshape((3, 4))  # 生成顺序 数列
    print(array2_2)
    array2_3 = np.linspace(0, 25, 6, dtype=int).reshape((2, 3))  # 生成分段数列
    print(array2_3)


def class3():
    # 加法减法
    a3 = np.array([10, 20, 30, 40])
    b3 = np.arange(4)
    c3 = a3 + b3
    print(a3, "\n", b3, "\n", c3)
    # 平方
    c3 = b3 ** 2
    print("-" * 35)
    print(f"b={b3},c = b**2,c={c3}")
    print("-" * 35)
    # sin
    print("-" * 20, "三角函数", "-" * 20)
    c3 = 10 * np.sin(a3)
    print(c3)
    print("-" * 20, "b<3", "-" * 20)
    print(f"b = {b3}, b<3 = {b3 < 3}")
    # 矩阵运算
    print("-" * 20, "矩阵运算", "-" * 20)
    a3_1 = np.array([[1, 1], [0, 1]])
    b3_1 = np.arange(4).reshape((2, 2))
    print(f"a={a3_1}\nb={b3_1}")
    print(f"a*b=\n{a3_1 * b3_1}")
    print(f"矩阵乘法np.dot(a,b)=   也可以写成a.dot(b)=\n{np.dot(a3_1, b3_1)}")  # 矩阵乘法  np.dot(a,b)   也可以写成  a.dot(b)
    # 随机
    print("-" * 20, "随机 最大值", "-" * 20)
    a3_2 = np.random.random((2, 4))
    print(a3_2)
    print(np.sum(a3_2, axis=1))  # axis=0纵向 1横向
    print(np.min(a3_2))
    print(np.max(a3_2))


def class4():
    a4 = np.arange(2, 14).reshape((3, 4))
    print(a4)
    print("-" * 20, "索引最小、最大argmin", "-" * 20)
    print(np.argmin(a4))  # 索引最小、最大
    print(np.argmax(a4))
    print("-" * 20, "累加cumsum", "-" * 20)
    # 平均 mean average 累加前面所有项的和 cumsum() 累差(每两项的差) diff()
    print(np.cumsum(a4))
    print("-" * 20, "限定范围clip", "-" * 20)
    # 排序 sort    转置 T或transpose   截取clip 限定范围
    print(np.clip(a4, 5, 9))


def class5():
    # 索引
    a5 = np.arange(3, 15).reshape((3, 4))
    print(a5)
    print(a5[2][1])
    print(a5[2, 1])
    print(a5[2, :])  # 2行所有数
    for row in a5:  # 输出行
        print(row)
    for column in a5.T:  # 输出列
        print(column)


def class6():
    a6 = np.array([1, 1, 1])
    b6 = np.array([2, 2, 2])
    print("-" * 20, "合并", "-" * 20)
    c6 = np.vstack((a6, b6))  # 上下合并 vertical(垂直) stack(堆)
    print(c6.shape)
    print(c6)
    d6 = np.hstack((a6, b6))  # 左右合并 horizontal stack
    print(d6)
    e6 = np.concatenate((a6, b6, b6), axis=0)  # 可以指定axis
    print(e6)
    print("-" * 20, "横向变纵向a6[:, np.newaxis]", "-" * 20)
    # a6.T不能把横向数列变成竖向数列
    print(a6[:, np.newaxis])  # 横向变纵向


def class7():
    a7 = np.arange(12).reshape((3, 4))
    print(a7)
    print("-" * 20, "分割", "-" * 20)
    print(np.split(a7, 3, axis=0))  # axis=0对每一列切分(从上到下切),把3行4列分成3行;1-从左到右切
    # 不等量分割
    print("-" * 20, "不等量分割", "-" * 20)
    print(np.array_split(a7, 2, axis=0))
    # 还有vsplit hsplit


def class8():
    print("-" * 20, "浅拷贝", "-" * 20)
    a8 = np.arange(4)
    b8 = a8  # 浅拷贝
    print(a8)
    a8[0] = 9
    print(a8)
    # 浅拷贝
    print(b8 is a8)
    # 深拷贝 deep copy
    print("-" * 20, "深拷贝", "-" * 20)
    c8 = a8.copy()
    a8[1:3] = [8, 7]
    print(a8)
    print(c8)
    print(c8 is a8)


def main():
    class8()


if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值