我正在处理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中做同样的事情吗?使用重塑功能无济于事,因为我需要“镜像”值(而不仅仅是重组它们)。
谢谢。
答案 0 :(得分:2)
不是很性感,但不是
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]
答案 1 :(得分:0)
尝试该代码段:
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.]]))
答案 2 :(得分:0)
这是给您的代码。
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)
答案 3 :(得分:0)
select role_id as roleId...