【发布时间】:2019-01-20 09:34:10
【问题描述】:
我在 Python 中有以下 8x8 矩阵,我将其表示为 8×8 numpy 数组或 pandas DataFrame:
import numpy as np
import pandas as pd
x = range(64)
x = np.reshape(x,(8,8))
print(x)
# [[ 0 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 31]
# [32 33 34 35 36 37 38 39]
# [40 41 42 43 44 45 46 47]
# [48 49 50 51 52 53 54 55]
# [56 57 58 59 60 61 62 63]]
df = pd.DataFrame(x)
print(df)
# 0 1 2 3 4 5 6 7
# 0 0 1 2 3 4 5 6 7
# 1 8 9 10 11 12 13 14 15
# 2 16 17 18 19 20 21 22 23
# 3 24 25 26 27 28 29 30 31
# 4 32 33 34 35 36 37 38 39
# 5 40 41 42 43 44 45 46 47
# 6 48 49 50 51 52 53 54 55
# 7 56 57 58 59 60 61 62 63
如果它是一个 2×2 矩阵,我正在尝试计算这些值的总和,并用这个总和替换上述值。我的最终结果是
# 0 1 2 3 4 5 6 7
# 0 216 216 216 216 280 280 280 280
# 1 216 216 216 216 280 280 280 280
# 2 216 216 216 216 280 280 280 280
# 3 216 216 216 216 280 280 280 280
# 4 728 728 728 728 792 792 792 792
# 5 728 728 728 728 792 792 792 792
# 6 728 728 728 728 792 792 792 792
# 7 728 728 728 728 792 792 792 792
所以,顶角矩阵的计数为 216,因为
0+1+2+3+8+9+10+11+16+17+18+19+24+25+26+27=216
同样,
32+33+34+35+40+41+42+43+48+49+50+51+56+57+58+59=728
4+5+6+7+12+13+14+15+20+21+22+23+28+29+30+31=280
36+37+38+39+44+45+46+47+52+53+54+55+60+61+62+63=792
是否有 numpy/pandas 功能可以使计算更容易?特别是对于更大的矩阵,手动设置“和矩阵”的坐标可能非常麻烦。
【问题讨论】:
标签: python pandas numpy matrix