Python 什么是Pytork中的扩展的numpy等价物?
假设我有一个形状为Python 什么是Pytork中的扩展的numpy等价物?,python,numpy,pytorch,Python,Numpy,Pytorch,假设我有一个形状为[1,5]的numpy数组x。我想沿着轴0展开它,这样得到的数组y具有形状[10,5],并且y[I:I+1,:]对于每个I等于x 如果x是一个pytorch张量,我可以简单地做 y = x.expand(10,-1) 但是numpy中没有展开,看起来像它的(展开和重复)看起来也不像它 例如: 导入火炬 >>>x=火炬。随机数(1,5) >>>打印(x) 张量([[1.3306,0.0627,0.5585,-1.3128,-1.4724]] >>>打印(x.expand(10
[1,5]
的numpy数组x
。我想沿着轴0展开它,这样得到的数组y
具有形状[10,5],并且y[I:I+1,:]
对于每个I等于x
如果x
是一个pytorch张量,我可以简单地做
y = x.expand(10,-1)
但是numpy中没有展开
,看起来像它的(展开
和重复
)看起来也不像它
例如: 导入火炬 >>>x=火炬。随机数(1,5) >>>打印(x) 张量([[1.3306,0.0627,0.5585,-1.3128,-1.4724]] >>>打印(x.expand(10,-1)) 张量([[1.3306,0.0627,0.5585,-1.3128,-1.4724], [ 1.3306, 0.0627, 0.5585, -1.3128, -1.4724], [ 1.3306, 0.0627, 0.5585, -1.3128, -1.4724], [ 1.3306, 0.0627, 0.5585, -1.3128, -1.4724], [ 1.3306, 0.0627, 0.5585, -1.3128, -1.4724], [ 1.3306, 0.0627, 0.5585, -1.3128, -1.4724], [ 1.3306, 0.0627, 0.5585, -1.3128, -1.4724], [ 1.3306, 0.0627, 0.5585, -1.3128, -1.4724], [ 1.3306, 0.0627, 0.5585, -1.3128, -1.4724], [ 1.3306, 0.0627, 0.5585, -1.3128, -1.4724]])
numpy拥有
numpy.newaxis
y=x[:,np.newaxis]
您可以通过以下方法实现这一点。但不能使用负数:
>>> import numpy as np
>>> x = np.array([[ 1.3306, 0.0627, 0.5585, -1.3128, -1.4724]])
>>> print(np.broadcast_to(x,(10,5)))
[[ 1.3306 0.0627 0.5585 -1.3128 -1.4724]
[ 1.3306 0.0627 0.5585 -1.3128 -1.4724]
[ 1.3306 0.0627 0.5585 -1.3128 -1.4724]
[ 1.3306 0.0627 0.5585 -1.3128 -1.4724]
[ 1.3306 0.0627 0.5585 -1.3128 -1.4724]
[ 1.3306 0.0627 0.5585 -1.3128 -1.4724]
[ 1.3306 0.0627 0.5585 -1.3128 -1.4724]
[ 1.3306 0.0627 0.5585 -1.3128 -1.4724]
[ 1.3306 0.0627 0.5585 -1.3128 -1.4724]
[ 1.3306 0.0627 0.5585 -1.3128 -1.4724]]
可以使用
np.tile
将给定轴的元素重复为:
>x=np.范围(5)
>>>x=np。展开尺寸(x,0)
>>>x.形状
(1, 5)
>>>y=np.tile(x,(10,1))#重复轴=0 10次,轴=1 1次
>>>y形
(10, 5)
numpy.reformate()可能就是你要找的?@DaveIdito否。reforme只是改变形状,而expand
实质上是将数据复制到新的维度。我认为这不是OP要找的:这只是添加一个新维度,而不是扩展现有维度。扩展通常用于向量乘以矩阵。numpy有广播,所以实际上可能是多余的,这与pytorch的工作原理完全相同。但显式地这样做使用了一种稍微不同的方法。