一些函数解析

numpy.transpose()

该函数为矩阵交换维度,列如:
矩阵:

arr = np.arange(8).reshape((2, 4))
'''
[[0 1 2 3]
 [4 5 6 7]]
'''
arr.transpose((1, 0))
'''
[[0 4]
 [1 5]
 [2 6]
 [3 7]]
 '''

即对矩阵进行转置,transpose(1, 0, 2)也是交换第一维和第二维,但不是对矩阵转置,部分高维矩阵要相乘需要转置可以使用transpose(-2, -1)

numpy.triu()

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
'''
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [13 14 15 16]]
'''
np.tril(arr, k=-1)  #倒三角矩阵
'''
[[ 0  0  0  0]
 [ 5  0  0  0]
 [ 9 10  0  0]
 [13 14 15  0]]
'''
np.triu(arr, k=1) #正三角矩阵
'''
[[ 0  2  3  4]
 [ 0  0  7  8]
 [ 0  0  0 12]
 [ 0  0  0  0]]
'''

numpy.size(a, axis=None)

a:输入的矩阵
axis:int型的可选参数,指定返回哪一维的元素个数。当没有指定时,返回整个矩阵的元素个数。

lambda

python中,lambda函数也叫匿名函数,及即没有具体名称的函数,它允许快速定义单行函数,类似于C语言的宏,可以用在任何需要函数的地方。这区别于def定义的函数。
lambda与def的区别:
1)def创建的方法是有名称的,而lambda没有。
2)lambda会返回一个函数对象,但这个对象不会赋给一个标识符,而def则会把函数对象赋值给一个变量(函数名)。
3)lambda只是一个表达式,而def则是一个语句。
4)lambda表达式” : “后面,只能有一个表达式,def则可以有多个。
5)像if或for或print等语句不能用于lambda中,def可以。
6)lambda一般用来定义简单的函数,而def可以定义复杂的函数。
6)lambda函数不能共享给别的程序调用,def可以。
lambda语法格式:

lambda [arg1 [, agr2,.....argn]] : expression

scatter_(input, dim, index, src) → Tensor

将src中的所有值按照index确定的索引写入tensor中。其中索引是根据给定的dimension,dim按照gather()描述的规则来确定。

注意,index的值必须是在_0_到_(self.size(dim)-1)_之间,

参数: - input (Tensor)-源tensor - dim (int)-索引的轴向 - index (LongTensor)-散射元素的索引指数 - src (Tensor or float)-散射的源元素

x = torch.rand(2, 5)
print(x)
y = torch.zeros(3, 5).scatter_(0, torch.LongTensor([[0, 1, 2, 0, 0], [2, 0, 0, 1, 2]]), x)
print(torch.LongTensor([[0, 1, 2, 0, 0], [2, 0, 0, 1, 2]]))
print(y)
'''
tensor([[0.1989, 0.4622, 0.6161, 0.6048, 0.4673],
        [0.9271, 0.5102, 0.3415, 0.2307, 0.9145]])
tensor([[0, 1, 2, 0, 0],
        [2, 0, 0, 1, 2]])
tensor([[0.1989, 0.0000, 0.3415, 0.6048, 0.4673],
        [0.0000, 0.5102, 0.0000, 0.2307, 0.0000],
        [0.9271, 0.0000, 0.6161, 0.0000, 0.9145]])
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值