python对矩阵部分求和_Python:如何通过对第一个邻域求和来降低矩阵的维数?

我看到有一个使用numpy.maxtrix的解决方案,也许您也可以测试我的解决方案并返回您的反馈。在

它与a*b矩阵if a and b are even一起工作。否则,如果a or b are odd,则可能失败。在

我的解决方案是:v = [

[3,4,5,6],

[2,3,4,5],

[2,2,0,1],

[5,2,2,3]

]

def shape(v):

return len(v), len(v[0])

def chunks(v, step):

"""

Chunk list step per step and sum

Example: step = 2

[3,4,5,6] => [7,11]

[2,3,4,5] => [5,9]

[2,2,0,1] => [4,1]

[5,2,2,3] => [7,5]

"""

for i in v:

for k in range(0, len(i),step):

yield sum(j for j in i[k:k+step])

def sum_chunks(k, step):

"""

Sum near values with step

Example: step = 2

[

[7,11], [

[5,9], => [12, 11],

[4,1], [20, 6]

[7,5] ]

]

"""

a, c = [k[i::step] for i in range(step)], []

print(a)

for m in a:

# sum near values

c.append([sum(m[j:j+2]) for j in range(0, len(m), 2)])

return c

rows, columns = shape(v)

chunk_list = list(chunks(v, columns // 2))

final_sum = sum_chunks(chunk_list, rows // 2)

print(final_sum)

输出:

^{pr2}$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值