关于tensor的学习(三)

索引与切片

索引方式:

第一种:最基本的索引方式,第二种:用:去进行索引,第三种:用...去进行索引。(不知道是否正确)

首先来说下第一种:

a = tf.ones([1,5,5,3])
print(a[0])
print(a[0][0])
print(a[0][0][0])     #最基本的索引方式,给出各层的数值

给出各层的数值。

第二种:

b = tf.random.normal([4,28,28,3])
print(b[1].shape)
print(b[1,2].shape)  # =b[1][2]


c=tf.range(10)#靠近初始段用正的编号,末端用负的编号
print(c[-1:])#  c[a:b] 从a取到b(不包含b),不写b的话代表从a到末端,不写a的话代表从初始段到b
#不写=默认
#取一段数据


#a[0].shape = a[0,:,:,:]
print(a[:,:,:,0].shape)  #取中间的维度
print(a[:,0,:,:].shape)





#增加一个  :  隔着取
#a[::3]隔着三个取一个数据

print(a[:,0::4,:,:]) #每隔着四个点取一次

print(a[::-1]) #倒叙
print(a[::-2])  #隔着采取

在第一种的基础上进行了简化操作,并且实现隔着固定的数据去取数据。

注:c[a:b] 从a取到b(不包含b),不写b的话代表从a到末端,不写a的话代表从初始段到b

第三种:在第二种的基础上进行简化操作:

# ...  #自动推导
#代替连续的冒号

print(a[...,0])    #0代表最末的维度
print(a[:,:,:,0])

切片方式:

#Selective indexing

利用gather进行切片处理。

#Selective indexing

#gather  收集
#指定行数

d = tf.random.normal([4,35,8])
print(tf.gather(a,axis=0,indices=[2,3]))
#axis  代表哪个维度      indices代表哪个索引
#可以联合起来使用

 (axis=)代表的是维度,indices=  代表的是索引

print(tf.gather_nd(d,[0]).shape)
#当作d[0]
print(tf.gather_nd(d,[[[0,0,0],[1,1,1],[2,2,2]]]))
print(tf.gather_nd(d,[[0,0,0],[1,1,1],[2,2,2]]))

加一个中括号和加两个中括号的shape会发生变化。

利用boolean_mask进行切片处理。

a=tf.random.normal([4,28,28,3])
print(tf.boolean_mask(a,mask=[True,True,False,False]).shape)
print(tf.boolean_mask(a,mask=[True,True,False],axis=3).shape)
#未指定axis则默认为0

 

 

注意的是未指定axis默认的为0。

a = tf.ones([2,3,4])
print(tf.boolean_mask(a,mask=[[True,False,False],[False,True,True]]))

 

根据中括号中的中括号对对应的维度进行切片。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值