首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以特定方式重塑Python数组

以特定方式重塑Python数组
EN

Stack Overflow用户
提问于 2018-06-21 03:21:25
回答 4查看 404关注 0票数 1

我正在编写Python代码,因此基本上可以使用Numpy数组完成此操作

我有一个用于它的Matlab代码,它是

代码语言:javascript
复制
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

或者,在没有任何循环的情况下,

代码语言:javascript
复制
B = conv2(A.', flip(eye(rows)));

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

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

谢谢你。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-21 04:57:00

不是很性感,但不是

代码语言:javascript
复制
import numpy as np

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

尝试翻译你的matlab代码

代码语言:javascript
复制
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]
票数 2
EN

Stack Overflow用户

发布于 2018-06-21 04:21:21

试试这段代码:

代码语言:javascript
复制
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)

它会打印出来

代码语言:javascript
复制
('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.]]))
票数 0
EN

Stack Overflow用户

发布于 2018-06-21 04:28:22

这是为您编写的代码。

代码语言:javascript
复制
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)    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50955592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档