【问题标题】:Forming matrix from 2 vectors in Numpy, with repetition of 1 vector在 Numpy 中从 2 个向量形成矩阵,重复 1 个向量
【发布时间】:2014-10-20 18:25:38
【问题描述】:

使用 numpy 数组我想以最经济的方式创建这样的矩阵: 给定

from numpy import array
a = array(a1,a2,a3,...,an)
b = array(b1,...,bm)

应处理为矩阵M:

M = array([[a1,a2,b1,...,an],
           ...           ...,
           [a1,a2,bm,...,an]]

我知道 numpy 数组的广播方法,但想不出一个好方法。 任何帮助将不胜感激,

干杯, 抢

【问题讨论】:

  • 那么b 的一个元素作为a 在矩阵中的每个副本的第三个元素插入?
  • 是的,所以如果 a=(1,2,3) 和 b=(4,5),假设我希望 b 在第 3 列,我的 M = [[1,2,4 ,3],[1,2,5,3]]

标签: python arrays numpy matrix


【解决方案1】:

您可以先在a 上使用numpy.resize,然后在调整大小的数组上使用numpy.insert 在所需索引处添加b 的项目:

In [101]: a = np.arange(1, 4)

In [102]: b = np.arange(4, 6)                                           

In [103]: np.insert(np.resize(a, (b.shape[0], a.shape[0])), 2, b, axis=1)                                                                       
Out[103]: 
array([[1, 2, 4, 3],                                                    
       [1, 2, 5, 3]])  

【讨论】:

  • 非常感谢,真的!像魅力一样工作。
【解决方案2】:

您可以结合使用numpy.tilenumpy.hstack 函数。

M = numpy.repeat(numpy.hstack(a, b), (N,1))

不过,我不确定我是否理解您的目标矩阵。

【讨论】:

    猜你喜欢
    • 2014-03-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2014-03-06
    相关资源
    最近更新 更多