2016-04-30 85 views
1

我有2 numpy阵列的形状。我想检查是否可以添加这些数组并确定最终的形状。Numpy:确定广播后的形状

有什么办法可以快速做到这一点,并涵盖所有的边缘情况?

+0

对于“除了”你需要相同的形状。你的意思是连接数组吗? – roadrunner66

+0

不,我不需要相同的形状:np.array([1,2])+ np.array([[10,1],[11,12]]) –

+0

@ roadrunner66:听起来像你还没有听说过NumPy的一个很棒的功能,[广播](http://docs.scipy.org/doc/numpy-1.10.1/user/basics.broadcasting.html)。 – user2357112

回答

1

如果你有实际NumPy的对象,你可以使用与NumPy的逻辑来决定这个(另外需要广播,看here):

def checkShapes(a, b): 
    try: 
    return (np.broadcast(a, b)).shape 
    except: 
    return (-1,) 
+0

谢谢!更普遍的情况将是完美的。有没有办法创建一个虚假的数组而不实际使用内存,这样我就可以使用np.broadcast? –

+0

为什么你会在第一个片段中使用一维数组,为什么你在第二个片段中做了奇怪的'len'检查? – user2357112

+0

@ user2357112我的错误是,我把数组看作一维数据,但看着文档,它可以有n个维度。至于奇怪的是,文档说:“受到一定的限制,较小的阵列在较大的阵列上”广播“,以便它们具有兼容的形状” –

相关问题