需要添加多个 np.newaxis 吗?

3
我希望对两个NumPy的ndarray数组A和B进行成对比较(使用<=符号),其中两个数组可以具有任意维度m和n,从而产生一个维度为m+n的数组。对于给定维度B,我知道如何执行以下操作:
1.标量:A <= B 2.一维:A[..., np.newaxis] <= B 3.二维:A[..., np.newaxis, np.newaxis] <= B
实际上,我正在寻找一种方式,可以插入与第二个数组中维度数量相同的np.newaxis。
是否存在类似于np.newaxis * B.ndim的语法或其他方法?
2个回答

3

被采纳的答案解决了OP的问题,但并没有以最佳方式回答标题中的问题。要添加多个 np.newaxis,您可以执行以下操作:

A[(...,) + (np.newaxis,) * B.ndim]

这种方法可能比使用 reshape 更易读。


2
有内置的功能可以实现这个 -
np.less_equal.outer(A,B)

另一种方法是通过重新塑形以适应新轴 -
A.reshape(list(A.shape)+[1]*B.ndim) <= B

是的,.outer 看起来正是我要找的,谢谢!“另一种方法”可能也行,但更加繁琐且难以理解。 - A. Donda
有没有一个二元运算符可以创建一个2元组?如果有的话,.outer将会是一个更好的答案,用于 https://dev59.com/0Wgu5IYBdhLWcg3wso-j - A. Donda
1
@A.Donda 不错的想法,但是没有(没有np.newaxis双关语)。 - Divakar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接