首页 > 解决方案 > 以特定方式重塑 Python 数组

问题描述

我正在编写一个 Python 代码,这样我基本上可以用一个 Numpy 数组来做到这一点

在此处输入图像描述

我有一个 Matlab 代码,它是

A = [1:30]'; % Example matrix
rows = 3;

for i=1:(numel(A)-rows+1)
    B(1:rows,i)=A(i:i+rows-1,1);
end

或者,没有任何循环,

B = conv2(A.', flip(eye(rows)));

B = B(:, rows:end-rows+1);

有人可以帮我在 Python 中做同样的事情吗?使用 reshape 函数没有帮助,因为我需要“镜像”这些值(而不仅仅是重新组织它们)。

谢谢你。

标签: pythonarraysnumpymatrixreshape

解决方案


不是很性感,但不适合

import numpy as np

a = np.arange(1,31)
b = np.arange(3).reshape(3,1)
c = b+a[:28]

试图翻译你的 matlab 代码

import numpy as np
from scipy.signal import convolve2d

a = np.arange(1,31).reshape(1,30)
b = np.flip(np.eye(3,28),0)
c = convolve2d(a, b)[:,2:28]

推荐阅读