【Numpy】运算符号

文章展示了如何使用TensorFlow的tf.math.argmax函数在不同轴(axis)上找到最大值的索引。给定一个形状为[3,4,5]的张量embeddings,分别沿最后一个维度(-1),第二个维度(1)和第一个维度(0)进行操作,得出不同维度上的最大值索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

形状与axis

设embeddings是一个shape=[3,4,5]的矩阵,可理解为3块4行5列,如下:

embeddings =    [[[-0.30166972  0.25741747 -0.07442257  0.24321035 -0.3538919 ]
                  [-0.22572032  0.1288028  -0.4686908  -0.07217035  0.05287632]
                  [ 0.15845934  0.07064888  0.00922218  0.2841002  -0.24992025]
                  [ 0.43347922 -0.43738696 -0.08176881  0.34185413 -0.2826353 ]]
                
                 [[-0.08590135  0.06792518 -0.07807922 -0.28746927 -0.10613027]
                  [ 0.07476929  0.132256   -0.0926154   0.39621904  0.2497718 ]
                  [-0.15389556  0.0867373   0.19403657 -0.11003655  0.317669  ]
                  [ 0.3949038  -0.17275128  0.34710506 -0.02576578 -0.17427891]]
                
                 [[-0.27703786  0.02631402  0.22129896 -0.07714707  0.41439041]
                  [-0.08512023  0.19059369 -0.13418713 -0.12881753 -0.26143318]
                  [-0.333749    0.27034065  0.45429572 -0.46164128 -0.3955955 ]
                  [ 0.24430516 -0.3841647   0.37126407 -0.463441   -0.1441828 ]]]

a = tf.math.argmax(embeddings, axis=-1)   # tf.math.argmax=tf.argmax,用来返回最大数值对应的index
b = tf.math.argmax(embeddings, axis=1)
c = tf.math.argmax(embeddings, axis=0)

得到
[[1 1 3 0]
[1 3 4 0]
[4 1 2 2]] # axis=-1,沿着最后一个维度“列”, shape=[3,4]

[[3 0 2 3 1]
[3 1 3 1 2]
[3 2 2 0 0]] # axis=1, 沿着第二个维度“行”,shape=[3,5]

[[1 0 2 0 2]
[1 2 1 1 1]
[0 2 2 0 1]
[0 1 2 0 2]] # axis=0,沿着第一个维度“块”,块和快叠加在一起,对应位置(如左上角)的加起来, shape=[4,5]

### 关于 NumPy 中无符号整数的用法和特性 在 Python 的科学计算库 NumPy 中,提供了多种数据类型来支持不同的数值范围和精度需求。对于无符号整数(unsigned integers),NumPy 提供了几种不同位宽的数据类型,如 `uint8`, `uint16`, `uint32`, 和 `uint64`。 #### 数据类型的定义与创建 这些无符号整数类型允许存储非负整数值,并且相比有符号整数能够表示更大的正数范围。例如: - `np.uint8`: 8-bit unsigned integer (0 to 255) - `np.uint16`: 16-bit unsigned integer (0 to 65535) 可以通过指定dtype参数来创建特定类型的数组: ```python import numpy as np # 创建一个 uint8 类型的一维数组 arr_uint8 = np.array([0, 1, 2], dtype=np.uint8)[^1] print("Array with uint8:", arr_uint8) ``` #### 数组操作中的注意事项 当处理图像或其他需要精确控制数值范围的应用场景时,使用无符号整数是非常常见的做法。然而,在执行某些算术运算或与其他类型混合时需要注意溢出行为以及可能引发的异常情况。比如将两个大值相加以至超出该类型的最大界限,则会发生模除取余的结果而不是抛错[^4]。 另外值得注意的是,如果试图对包含字符串和其他非数字元素的 ndarray 执行比较操作会遇到不兼容的问题,这通常是因为数据类型之间的冲突所致[^5]。 为了确保正确的逻辑实现,建议始终验证输入数据的有效性和一致性;必要时可利用 astype 方法显式转换成期望的目标类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值