使用自定义体系结构构建Matrix的最快方法

时间:2016-10-19 09:06:18

标签: python pandas numpy

在numpy或pandas中构建具有此形式的矩阵的最快方法是什么:

1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1

保留奇数和偶数架构?

1 个答案:

答案 0 :(得分:5)

使用NumPy brodacasting

26:34

要构建范围数组,我们可以这样做 -

In [289]: a = np.array([1,2,3,2,1])

In [290]: np.minimum(a[:,None],a)
Out[290]: 
array([[1, 1, 1, 1, 1],
       [1, 2, 2, 2, 1],
       [1, 2, 3, 2, 1],
       [1, 2, 2, 2, 1],
       [1, 1, 1, 1, 1]])

添加偏见

假设我们想要向上或向下移动最高数字/峰值。我们需要创建另一个偏向数组并使用相同的In [303]: N = 3 In [304]: np.concatenate((np.arange(1,N+1),np.arange(N-1,0,-1))) Out[304]: array([1, 2, 3, 2, 1]) 策略,如此 -

broadcasting

同样,要偏向左移或右移,请修改In [394]: a = np.array([1,2,3,2,1]) In [395]: b = np.array([2,3,2,1,0]) # Biasing array In [396]: np.minimum(b[:,None],a) Out[396]: array([[1, 2, 2, 2, 1], [1, 2, 3, 2, 1], [1, 2, 2, 2, 1], [1, 1, 1, 1, 1], [0, 0, 0, 0, 0]]) ,如此 -

a