002.Pytorch框架CV开发(numpy的基础操作)

Numpy的基础操作    

定义数组

使用 numpy.array() 函数可以定义一个数组。数组可以是多维的,元素可以是整数、浮点数等。

import numpy as np

# 定义一维数组
arr1 = np.array([1, 2, 3, 4, 5])

# 定义二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])

均匀分布的数值数组

   np.linspace()生产指定范围内的均匀分布的数值数组

    使用方法:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
  • start:数组的起始值
  • stop:数组的终止值
  • num:生成的样本数,默认是 50
  • endpoint:如果为 True,则包括终止值 stop(默认)。如果为 False,则不包括终止值。
  • retstep:如果为 True,返回间隔值 step,即相邻元素之间的差值。
  • dtype:指定返回数组的数据类型
  • axis:沿着指定轴生成数据(默认是 0

    示例:

        1.生成一个简单的线性间隔数组:       

import numpy as np
#这个例子在 0 到 10 之间生成 5 个均匀分布的数值。
arr = np.linspace(0, 10, 5)
print(arr)#输出:[ 0  2.5  5 7.5 10 ]


#不包含终止值:
arr1 = np.linspace(0, 10, 5, endpoint=False)
print(arr1)
#输出:[0.  2.  4.  6.  8. ]这时候10被排除在外


#返回步长
arr, step = np.linspace(0, 10, 5, retstep=True)
print(arr)  # 数值[ 0.   2.5  5.   7.5 10. ]
print(step)  # 步长 2.5


#使用指定的数据类型:
arr = np.linspace(0, 1, 6, dtype=int)
print(arr)
#输出:[0 0 0 0 0 1]

寻找最大值与最小值

使用 numpy.max()numpy.amax() 函数可以找到数组中的最大值。可以指定轴来查找特定维度上的最大值。


import numpy as np

arr2 = np.array([[1, 2, 3], [4, 5, 6]]) 
#    1   2   3
#    4   5   6
            
# 查找整个数组的最大值
max_value = np.max(arr2)
print(max_value) #输出:6

# 查找每一列的最大值
max_col = np.max(arr2, axis=0)
print(max_col) #输出 [4 5 6]

# 查找每一行的最大值
max_row = np.max(arr2, axis=1)
print(max_row) #输出[3 6]

使用 numpy.argmax()函数是返回最大值的索引

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])
max_index = np.argmax(arr)  # 查找最大值的索引
print(max_index)  # 输出:5,表示最大值6的位置(展平后的索引)

# 沿着每列查找最大值的索引
max_index_axis0 = np.argmax(arr, axis=0)
print(max_index_axis0)  # 输出:[1 1 1],表示每列最大值的索引

# 沿着每行查找最大值的索引
max_index_axis1 = np.argmax(arr, axis=1)
print(max_index_axis1)  # 输出:[2 2],表示每行最大值的索引

维度上升

使用 numpy.expand_dims() 可以增加数组的维度

用法:

numpy.expand_dims(a, axis)
    • a:输入的数组。
    • axis:指定新轴的插入位置,可以是负数。这个轴会在原数组的维度上增加,返回的新数组会增加一个新的维度。

    示例 1:在数组的特定位置插入维度

    import numpy as np
    
    arr = np.array([1, 2, 3])  # 形状是 (3,)
    print("原始数组形状:", arr.shape)
    
    expanded_arr = np.expand_dims(arr, axis=0)  # 在第 0 轴增加新维度
    print("增加维度后的数组形状:", expanded_arr.shape)

    输出:

    原始数组形状: (3,)
    增加维度后的数组形状: (1, 3)

    示例 2:在另一个位置增加维度

    arr = np.array([1, 2, 3])  # 形状是 (3,)
    
    expanded_arr = np.expand_dims(arr, axis=1)  # 在第 1 轴增加新维度
    print("增加维度后的数组形状:", expanded_arr.shape)

    输出:

    增加维度后的数组形状: (3, 1)

     示例 3:在多维数组中使用 expand_dims

    arr = np.array([[1, 2], [3, 4]])  # 形状是 (2, 2)
    print("原始数组形状:", arr.shape)
    
    expanded_arr = np.expand_dims(arr, axis=0)  # 在第 0 轴增加新维度
    print("增加维度后的数组形状:", expanded_arr.shape)

    输出:

    原始数组形状: (2, 2)
    增加维度后的数组形状: (1, 2, 2)

    维度下降

    使用 numpy.squeeze() 可以减少数组的维度(去除数组中所有维度为 1 的维度)。

    # 增加维度
    arr_expanded = np.expand_dims(arr1, axis=0)
    
    # 减少维度
    arr_squeezed = np.squeeze(arr_expanded)
    

    数组计算

    Numpy 支持对数组进行各种数学运算,如加法、减法、乘法、除法等。这些操作是逐元素进行的。

    # 定义一维数组
    arr1 = np.array([1, 2, 3, 4, 5])
    
    # 数组加法
    result_add = arr1 + arr1
    
    # 数组乘法
    result_mul = arr1 * 2
    
    # 数组除法
    result_div = arr1 / 2
    

    运行结果

    [ 2  4  6  8 10]
    [ 2  4  6  8 10]
    [0.5 1.  1.5 2.  2.5]

    矩阵 reshape

    使用 numpy.reshape() 函数可以改变数组的形状,而不改变其数据。

    
    # 将一维数组 reshape 为二维数组
    arr_reshaped = arr1.reshape(5, 1)
    
    # 将二维数组 reshape 为三维数组 2*3*1的三维数组
    arr_reshaped_3d = arr2.reshape(2, 3, 1)
    

          注意:          

        2×3×1 的三维数组表示有 2 个矩阵、每个矩阵有 3 行,1 列组。              

    • 第一维(2)表示两个矩阵。
    • 第二维(3)表示每个矩阵有 3 行。
    • 第三维(1)表示每一行只有一个元素

        2×3×1×4 的四维数组四维数组可以被看作是由多个三维数组组成的数组。

    • 第一维 2 表示有 2 个 "块"(整体)。
    • 第二维 3 表示每个 "块" 中有 3 个矩阵。
    • 第三维 1 表示每个矩阵只有 1 行。
    • 第四维 4 表示每行有 4 个元素。

    矩阵维度转换)

    矩阵维度转换就相当于3*2矩阵 转置成2*3矩阵

    使用 numpy.transpose()numpy.T 可以转置矩阵,交换其行和列。

    # 定义二维数组
    arr2 = np.array([[1, 2, 3], [4, 5, 6]])
    
    # 转置矩阵
    arr_transposed = np.transpose(arr2)
    
    # 使用 .T 属性进行转置
    arr_transposed_T = arr2.T
    
    print("二维数组:\n",arr2 )
    print("转置的二维数组\n",arr_transposed )
    
    print("转置的二维数组\n",arr_transposed_T )
    

    运行结果:

    二维数组:
     [[1 2 3]
     [4 5 6]]
    转置的二维数组
     [[1 4]
     [2 5]
     [3 6]]
    转置的二维数组
     [[1 4]
     [2 5]
     [3 6]]
    
    
    

    使用np创建一张图

               np.zeros()numpy 中的一个函数,用于创建一个指定形状的数组,所有元素的值都为 0。

    
    np.zeros(shape, dtype=float, order='C')
    • shape:指定返回数组的形状,可以是一个整数(表示一维数组)或一个元组(表示多维数组)。
    • dtype:指定数组的数据类型,默认是 float
    • order:指定多维数组的存储顺序。'C' 为按行优先顺序(默认),'F' 为按列优先顺序。

    示例:

    1.创建一维零数组:

    import numpy as np 
    arr = np.zeros(5)
    print(arr)
    
    #输出:[0. 0. 0. 0. 0.]

    2.创建二维零数组:

    arr = np.zeros((3, 4)) # 3行4列的二维数组
    print(arr)
    #输出:[[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]

    3.指定数据类型:

    arr = np.zeros((2, 3), dtype=int) # 创建一个 2x3 的整数型零数组 
    print(arr)
    
    #输出:[[0 0 0] [0 0 0]]

    4.创建一张黑色空白图像,大小为 400x400,3通道(彩色),数据类型为 uint8

    blank_img = np.zeros((400, 400, 3), dtype=np.uint8)

    5.np.zeros_like()

    arr = np.zeros((2, 3), dtype=int) # 创建一个 2x3 的整数型零数组 
    print(arr)
    #np.zeros_like( ) 此方法意思是复制一个一样的数组
    
    arr1=np.zeros_like(arr )
    print(arr1)
    #输出:[[0 0 0] [0 0 0]]
    
    

    <think>好的,用户想了解CozeDify在IT领域的作用与区别。首先,我需要确认这两个平台的基本信息。CozeDify都是面向企业级的大模型应用开发平台,但它们的侧重点可能不同。根据引用[2],CozeDify的讨论中提到,企业级应用需要结合业务与智能技术,而不仅仅是添加对话功能。这说明两者都致力于帮助企业整合AI能力,但具体实现方式可能有差异。 接下来,我需要分析它们各自的作用。Coze可能更注重低代码或行业定制化,让非技术用户也能参与开发,比如通过可视化界面配置工作流。而Dify可能强调技术灵活性,提供更多API开发工具,适合需要深度定制的企业。这需要进一步验证,比如查看它们的官方文档或案例。 然后,区别方面,可能包括目标用户、功能模块、集成能力等。例如,Coze可能提供预置的行业解决方案,而Dify更偏向于通用型平台,让开发者自行构建。此外,引用[2]提到“既懂代码又懂业务”的智能开发范式,可能Dify在技术深度上更强,而Coze在业务适配性上更优。 还需要考虑用户可能的深层需求,比如他们是否关心开发成本、技术门槛、扩展性等。因此,回答中需要对比两者的优缺点,帮助用户根据自身情况选择。同时,要确保引用正确,比如引用[2]中关于企业级应用陷阱的部分,说明两者的设计如何避免这些问题。 最后,生成的相关问题要围绕平台选择、适用场景、技术优势等方面,帮助用户进一步探索。例如,如何选择适合的平台,或者它们的集成方式等。整个过程要保持逻辑清晰,信息准确,符合用户的中文需求。</think>### Coze与Dify在IT领域的作用与区别 #### **1. 核心定位与作用** - **Coze**: 聚焦于**低代码/无代码的行业场景化AI应用构建**,强调通过预置模块可视化工具快速实现企业级AI能力与业务系统的融合。例如,支持通过拖拽式流程设计器配置智能客服、数据分析场景,降低技术门槛[^2]。 - **Dify**: 定位为**通用型大模型应用开发平台**,提供从模型训练、部署到应用编排的全链路工具,注重开发者对模型能力的深度控制,适用于需要高度定制化的复杂AI系统开发[^2]。 #### **2. 关键区别** | 维度 | Coze | Dify | |--------------|-------------------------------|-------------------------------| | **目标用户** | 业务分析师/非技术背景人员 | 开发者/技术团队 | | **功能重心** | 行业场景模板+快速集成 | 模型微调+API扩展 | | **技术深度** | 封装底层技术,简化交互 | 开放模型接口,支持代码级调试 | | **典型用例** | 智能营销话术生成、HR问答助手 | 定制化NLP引擎、私有知识库系统 | #### **3. 设计哲学对比** - Coze遵循**“业务驱动智能”**理念,如引用[2]所述:“用智能技术重构业务操作系统”,其价值在于将AI能力封装为可复用的业务组件。 - Dify则强调**“智能赋能开发”**,通过标准化工具链帮助开发者实现从Prompt工程到服务部署的完整生命周期管理。 #### **4. 适用场景建议** - 选择Coze:需快速上线标准化AI功能(如对话机器人),且团队技术储备有限时。 - 选择Dify:需深度结合私有数据训练垂直领域模型,或需要灵活对接现有技术架构时[^2]。 ---
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值