我正在编写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做同样的事情吗?使用重塑函数是没有帮助的,因为我需要“镜像”这些值(而不仅仅是重新组织它们)。
谢谢你。
发布于 2018-06-21 04:57:00
不是很性感,但不是
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]
发布于 2018-06-21 04:21:21
试试这段代码:
import numpy as np
start = 1
end = 30
b_dim = 28
a = np.arange(start, end+1)
b = np.zeros((3, b_dim))
print("a = ", a)
rows, _ = b.shape
for row in range(rows):
data = a[row:row+b_dim]
b[row, :] = data
print("b = ", b)
它会打印出来
('a = ', array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]))
('b = ', array([[ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11.,
12., 13., 14., 15., 16., 17., 18., 19., 20., 21., 22.,
23., 24., 25., 26., 27., 28.],
[ 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23.,
24., 25., 26., 27., 28., 29.],
[ 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,
14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24.,
25., 26., 27., 28., 29., 30.]]))
发布于 2018-06-21 04:28:22
这是为您编写的代码。
import numpy as np
A = np.array(list(range(1,31)))
rows = 3
new_A = np.zeros((rows,A.size-rows+1))
for i in range(rows):
new_A[i,:] = A[i:A.size-rows+i+1]
print (new_A)
https://stackoverflow.com/questions/50955592
复制相似问题