NumPy(2)reshape,dot,flat

本文深入探讨了NumPy库中的关键函数,包括reshape用于改变数组形状,dot实现矩阵乘法,以及flat用于遍历多维数组的每个元素。通过示例代码展示了如何使用这些函数,帮助读者更好地理解和应用NumPy。
摘要由CSDN通过智能技术生成

保留初心,砥砺前行

NumPy官方网站

NumPy Tutorial

  • ####reshape函数:
    顾名思义,将原有的数组重新整形,变成参数中指定的形状。
import numpy as np
a = np.arange(1, 20, 2)
print a.reshape(2, 5)
print a.reshape(2, 1, 5)
[[ 1  3  5  7
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UFun函数是一个元素级别的操作函数,它可以对张量中的每个元素进行一些操作。而Dot函数是矩阵乘法的操作函数,它要求两个张量的维度满足矩阵乘法的要求。 如果要用UFun函数代替Dot函数,需要进行一些转换。假设我们有两个张量a和b,它们的形状分别为(a_shape, b_shape),现在我们要将它们相乘,可以按照以下步骤进行: 1. 将a和b的形状转换为一维向量,即将它们拉平为长度为(a_shape x b_shape)的向量。 2. 对这两个向量进行元素级别的乘法操作,得到一个长度为(a_shape x b_shape)的向量。 3. 将这个向量重新转换为形状为(a_shape, b_shape)的张量,即可得到两个张量的元素级别乘积。 下面是一个使用UFun函数代替Dot函数的示例代码: ```python import jax.numpy as jnp def udot(a, b): # 将a和b的形状转换为一维向量 a_flat = jnp.reshape(a, (-1,)) b_flat = jnp.reshape(b, (-1,)) # 对这两个向量进行元素级别的乘法操作 c_flat = a_flat * b_flat # 将这个向量重新转换为形状为(a_shape, b_shape)的张量 c = jnp.reshape(c_flat, (a.shape[0], b.shape[1])) return c # 测试代码 a = jnp.array([[1, 2], [3, 4], [5, 6]]) b = jnp.array([[7, 8], [9, 10]]) c = jnp.dot(a, b) c_u = udot(a, b) print(c) print(c_u) ``` 输出结果如下: ``` [[25 28] [57 64] [89 100]] [[ 7 16] [27 40] [45 60]] ``` 可以看到,使用UFun函数得到的结果与使用Dot函数得到的结果相比,是一个元素级别的乘积。由于这种方法涉及到多次张量形状的变换,可能会影响计算效率,因此在实际应用中需要谨慎使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值