繁体   English   中英

访问 Python 矩阵中的行和列

[英]Access Rows and Columns in Python Matrix

t = [[0],[1]]

如果矩阵实际上是一维的,我想要行和列的总和:

s1 = sum(t[0][:])
s2 = sum(t[:][0])

我得到t[0][:]t[:][0] = 0而这些应该是列表,第一行和第一列。

t[:][0]应该是== [0, 1]

如何正确获取总和以及列和行访问?

你可以这样做,

假设您的输入是:

t=[[1,2,3],[4,5,6],[7,8,9]]

#sum of row 
[sum(x) for x in t]

#sum of columns
col_sum=[]
row_length = len(t[0]) #row length 
for idx in range(row_length):
  s=0
  for i in range(len(t)):
   s +=t[i][idx]
  col_sum.append(s)

注意: t[:][0]t[0]相同,假设你有t=[[0],[1],[2]]那么t[:2] == [[0],[1]]

你可以试试这个。

>>> a=[[1,2,3],
   [4,5,6],
   [7,8,9]]
>>> 
>>> a
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> def row_sum(_list,row_idx):
    return sum(_list[row_idx])

>>> row_sum(a,0)
6   #summation of 1st row i.e 1+2+3
>>> def col_sum(_list,col_idx):
    cols=list(zip(*_list))
    return sum(cols[col_idx])

>>> col_sum(a,0)
12 #summation of 1st column i.e 1+4+7
>>> col_sum(a,1)
15 #summation of 2nd column i.e 2+5+8

这是一个 numpy 方法。

import numpy as np
a=[[1,2,3],
       [4,5,6],
       [7,8,9]]
a=np.array(a)
def nprow_sum(_list,row_idx):
    return sum(_list[row_idx])
def npcol_sum(_list,col_idx):
    return sum(_list[:,col_idx])

使用列表理解的解决方案:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

sums_by_row = [sum(row) for row in matrix]

sums_by_col = [sum([row[icol] for row in matrix]) for icol in range(len(matrix[0]))]

print(sums_by_row)  # [6, 15, 24]

print(sums_by_col)  # [12, 15, 18]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM