python计算一个矩阵的主对角线之和及次对角线之和_python – 使用numpy获取多维数组的所有对角线(包括次要对角线)...

如果你想要一个从corner1到corner2的对角线并以形式定义角落

(0,0,0,…,0),(0,0,0,….,1),…,(1,1,1,…,1)

其中0表示“此维度为0”,1表示“此维度为-1 /结束”

然后,这将返回从corner1到corner2获得的值,假设数组在每个维度中具有相同的大小.

import numpy

def diagonal(arr,corner1,corner2):

arr=numpy.array(arr)

#Change values to fit array

corner1Copy=(len(arr)-1)*numpy.array(corner1)

corner2Copy=(len(arr)-1)*numpy.array(corner2)

#create return array by running from corner1 to corner2 and returning the values

return [arr[tuple((i*corner2Copy+(len(arr)-i-1)*corner1Copy)/(len(arr)-1))] for i in range(len(arr))]

这里有两个小的测试案例,但我建议创建更多,以防我错过了一些东西:

arr=[[[i+j+k for i in range(5)]for j in range(5)] for k in range(5)]

corner1=[0,0,0]

corner2=[1,1,1]

#returns arr[0,0,0],arr[1,1,1],....,arr[-1,-1,-1]

print(diagonal(arr,corner1,corner2))

print([arr[i][i][i] for i in range(len(arr))])

arr2=[[i+j for i in range(5)]for j in range(5)]

corner12=[0,1]

corner22=[1,1]

#return arr[0,-1],arr[1,-1],....,arr[-1,-1]

print(diagonal(arr2,corner12,corner22))

print([arr2[i][-1] for i in range(len(arr2))])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值