np.meshgrid公司对于高维矩阵

2024-03-29 11:40:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用np.meshgrid创建新矩阵,将类似seq.shape = (a,b,c)的矩阵转换成{},其中新成对矩阵的最后一个维度是vi(vi+vj)/2和{}(vivj来自{})的串联。但是np.meshgrid似乎不适用于高维矩阵。有没有别的接线员能让这一切发生?在


Tags: np矩阵seqvishapevjmeshgrid接线员
1条回答
网友
1楼 · 发布于 2024-03-29 11:40:19

您需要像这样广播您的输入:

>>> import numpy as np
>>> 
>>> a, b, c = 2, 3, 4
>>> seq = np.arange(a*b*c).reshape(a, b, c)
>>> 
>>> weight = np.linspace(0, 1, 3)
>>> result = seq[..., None, :, None] * weight + seq[:, None, ..., None] * weight[::-1]
>>> result.shape
(2, 3, 3, 4, 3)

>>> result
array([[[[[ 0.,  0.,  0.],
          [ 1.,  1.,  1.],
          [ 2.,  2.,  2.],
          [ 3.,  3.,  3.]],

         [[ 4.,  2.,  0.],
          [ 5.,  3.,  1.],
          [ 6.,  4.,  2.],
          [ 7.,  5.,  3.]],

         [[ 8.,  4.,  0.],
          [ 9.,  5.,  1.],
          [10.,  6.,  2.],
          [11.,  7.,  3.]]],

         ...

        [[[12., 16., 20.],
          [13., 17., 21.],
          [14., 18., 22.],
          [15., 19., 23.]],

         [[16., 18., 20.],
          [17., 19., 21.],
          [18., 20., 22.],
          [19., 21., 23.]],

         [[20., 20., 20.],
          [21., 21., 21.],
          [22., 22., 22.],
          [23., 23., 23.]]]]])

相关问题 更多 >