【python代码技巧2】数组索引扩增技巧

import numpy as np
import torch

a = np.array([x for x in range(12)]).reshape(3, 4)
index = np.array([[0,1] for x in range(5)]).flatten()
print "a:\n", a, a.shape
print "index:\n", index, index.shape
a:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]] (3, 4)
index:
[0 1 0 1 0 1 0 1 0 1] (10,)
print a[index], a[index].shape
[[0 1 2 3]
 [4 5 6 7]
 [0 1 2 3]
 [4 5 6 7]
 [0 1 2 3]
 [4 5 6 7]
 [0 1 2 3]
 [4 5 6 7]
 [0 1 2 3]
 [4 5 6 7]] (10, 4)

pytorch同样有这种特性

a = torch.Tensor([x for x in range(12)]).view(3, 4)
index = torch.LongTensor([[0,1] for x in range(5)]).view(-1)
print "a:\n", a
print "index:\n", index
a:

  0   1   2   3
  4   5   6   7
  8   9  10  11
[torch.FloatTensor of size 3x4]

index:

 0
 1
 0
 1
 0
 1
 0
 1
 0
 1
[torch.LongTensor of size 10]
print a[index], a[index].size()
    0     1     2     3
    4     5     6     7
    0     1     2     3
    4     5     6     7
    0     1     2     3
    4     5     6     7
    0     1     2     3
    4     5     6     7
    0     1     2     3
    4     5     6     7
[torch.FloatTensor of size 10x4]
 torch.Size([10, 4])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值