社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python中矩阵的操作:将元素的右边和底部的值添加到该元素中

user11114474 • 5 年前 • 1513 次点击  

我对编码很陌生,所以请容忍我。

假设我有一个二维列表 M = [[3, 0, 2, 18],[-1, 1, 3, 4],[-2, -3, 18, 7]] 表示矩阵的方法

[3, 0, 2, 18]
[-1, 1, 3, 4]
[-2, -3, 18, 7]

我希望通过将值添加到元素的右侧和底部来查找每个元素的编译值(cv)

例如

Cv[2,3]给出了7+0+0=7,因为它的右边和底部没有元素

Cv[1,3]给我4+7+0=11,因为它右边没有单元格

Cv[2,2]给我18+0+7=25

Cv[1,2]表示1+25+11=39

求解的矩阵是

[2161327029]

〔81,62,39,11〕

[20,22,25,7]

我怎么知道[0,0]的简历?我设法找到了基列的简历,但之后就变得太乱了。有更好的办法吗?我在寻找一种迭代和递归的方法。谢谢您!

def cv_iterative(m):
    #first row
    matrixnew = []
    total = 0
    base = reversed(m[len(m) - 1])
    baseresult = (list(accumulate(base)))
    basenew = []
    for i in baseresult:
        basenew.append(i)
    basenew = reversed(basenew)
    matrixnew.append(list(basenew))```


  [1]: https://i.stack.imgur.com/sjIk2.png
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40669
 
1513 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Heyran.rs
Reply   •   1 楼
Heyran.rs    6 年前

试试这个:

def cv_iterative(m):    
    for i in range(1, len(m)+1):
        for j in range(1, len(m[-i])+1):

            s = m[-i][-j]

            if j != 1:
                s += m[-i][-j+1]
            if i != 1:
                s += m[-i+1][-j]

            m[-i][-j] = s

    return m

M = [[3, 0, 2, 18],[-1, 1, 3, 4],[-2, -3, 18, 7]]
CV = cv_iterative(M)
print(CV)
print(CV[0][0])

如果你只想得到 216 return m[0][0] 而不是 return m 然后:

M = [[3, 0, 2, 18],[-1, 1, 3, 4],[-2, -3, 18, 7]]
print(cv_iterative(M))