numpy中张量维度的简单理解

        接触numpy不久,一直不太理解里面的张量还有axis轴究竟是个什么东西。貌似随便给我一个高维的张量都不能描述它的shape是什么样的。后来自己仔细研究了一下,有所收获。

        首先,张量不同于向量或者矩阵。一维的张量是没有行与列之分的。

import numpy as np
A = [1, 2]
B = [[1],[2]]

a = np.array(A)
b = np.array(B)

print(a, a.shape)  # >>>[1 2] (2,)

print(b, b.shape)  # >>>[[1]
                   #     [2]] (2, 1)

所以这样输出的b并不是一个列向量,而是一个“矩阵”。

shape输出的元组里,每个数字表示的都是什么意思?下面的代码可以说明

import numpy as np
C = [[[1], [2]],
     [[3], [4]],
     [[4], [2]]] 

c = np.array(C)

axis0 = np.sum(c, axis = 0)
axis1 = np.sum(c, axis = 1)
axis2 = np.sum(c, axis = 2)

print(c, c.shape)  # >>> [[[1]
                   #       [2]]

                   #     [[3]
                   #      [4]]

                   #     [[4]
                   #      [2]]] (3, 2, 1)

print("-" * 20)
print(axis0, axis0.shape)   #>>> (2, 1)
print("-" * 20)
print(axis1, axis1.shape)   #>>> (3, 1)
print("-" * 20)
print(axis2, axis2.shape)   #>>> (3, 2)

定义了一个3维的张量C,怎么判断C的形状?这里最好不要从矩阵的角度来理解,我觉得从list的角度理解反而更好。c.shape的输出结果为(3, 2, 1),其中每个数字代表的就是中括号里元素的个数,3就是最外成的中括号里有3个元素。2和1同理。这样的话,任意给定一个高维的张量,也能判断它的形状了。

再就是axis的理解。从输出结果看,axis从小到大指定的就是shape输出里从左至右的维度。就sum这个方法而言,就是去掉指定维度的那个中括号就可以了。

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值