当前位置: 首页 > 面试题库 >

有效地减去不同形状的numpy数组

沈俊美
2023-03-14
问题内容

使用出色的numpy广播规则,您可以v从形状(5,3)数组减去一个形状(3,)数组,X其中

X - v

结果是一个形状(5,3)数组,其中每一行i都是差异X[i] - v

有没有一种方法可以从中减去一个形状(n,3)数组wX以便wX不显式使用循环的情况下从整个数组中减去每一行?


问题答案:

您需要扩展Xwith的尺寸None/np.newaxis以形成3D数组,然后通过进行减法w。这将broadcasting对该3D操作起作用,并导致输出形状为(5,n,3)。实现看起来像这样-

X[:,None] - w  # or X[:,np.newaxis] - w

相反,如果所需的顺序是(n,5,3),则您需要扩展的尺寸w,例如-

X - w[:,None] # or X - w[:,np.newaxis]

样品运行-

In [39]: X
Out[39]: 
array([[5, 5, 4],
       [8, 1, 8],
       [0, 1, 5],
       [0, 3, 1],
       [6, 2, 5]])

In [40]: w
Out[40]: 
array([[8, 5, 1],
       [7, 8, 6]])

In [41]: (X[:,None] - w).shape
Out[41]: (5, 2, 3)

In [42]: (X - w[:,None]).shape
Out[42]: (2, 5, 3)


 类似资料:
  • 问题内容: 这听起来很简单,我想我的想法太复杂了。 我想制作一个数组,其元素是从两个形状相同的源数组生成的,具体取决于源数组中哪个元素更大。 为了显示: 我不知道如何产生一个将array1和array2的元素组合在一起的array3,以产生一个数组,其中仅取两个array1 / array2元素值中的较大者。 任何帮助将非常感激。谢谢。 问题答案: 我们可以使用NumPy内置的,正是为此而制作的-

  • 问题内容: 我尝试了解如何使用来处理数组(线性代数中的向量)。 在以下示例中,我生成两个 和: 对我来说,和根据线性代数定义具有相同的形状:1列,3列,但不适合。 现在,该 产品: 我有三个不同的输出。 和之间有什么区别?为什么点不起作用? 这些点产品也存在一些差异: 问题答案: 请注意,您不仅在处理一维数组: 因此,是2D阵列。您还可以在:(1,3)的输出中看到这一点,因为(3,)是一个维度,它

  • 根据postgresql(postgis)方法,此几何是有效的,但是Elasticsearch在索引时抛出illegal_argument_exception错误 https://gist.github.com/owexroasia/127c61ee41304fe2d2d0e0015216a780 {"type":"mapper_parsing_exception","原因":"未能解析类型[ge

  • 问题内容: 假设我有2个矩阵M和N(都具有> 1列)。我也有一个包含2列的索引矩阵I- M代表1列,N代表1列。N的索引是唯一的,但是M的索引可能会出现多次。我要执行的操作是 除了for循环以外,还有其他更有效的方法吗? 问题答案: 为了完整起见,在numpy> = 1.8中,您还可以使用的方法: 除了明显的性能劣势外,它还有两个优点: 将其权重转换为双精度浮点数,将与数组的本机类型一起使用。这使

  • 问题内容: 在SQL Server 2008中,我有一个如下用户表: 当用户注册到页面时,她选择自己的出生年份。前程序员(当然!)让用户选择正确的年份,但是插入数据库的值是DateTime.Now … 现在,我需要减去每个用户在UserBirthYear中的15年并将其保存到数据库中。有50万用户。如何最好地实现? 提前致谢。 问题答案:

  • 我有一个从列表转换的数组,当我试图得到它的形状时,我只得到一个数字。这样地: 而我得到了 然后我试着 我明白了 好像a1的工作原理和a2一样。我能那样想吗?如果我把a1当成a2,除了形状法,会不会有问题?