首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写一个函数,在Python语言中将数组(NxN)的对角元素作为数组返回

编写一个函数,在Python语言中将数组(NxN)的对角元素作为数组返回
EN

Stack Overflow用户
提问于 2018-11-26 17:10:40
回答 2查看 539关注 0票数 0
代码语言:javascript
复制
import numpy as np
#getting number of rows and columns for the arrat
nr=input("enter rows")
nc=input("enter columns")
print("Please enter same rows and columns")
n=nr*nc
ar1=[]
#checking for square matrix
if(nr==nc):
#loop to append elements into the empty-list ar1
  for i in range(n):
     ele=input("enter elements")
     ar1.append(ele)
#getting the number of rows of array1
array1=np.array(ar1).shape
#function to get the diagonal elements of array
def diagonal(a):
  global n
  n=str(n)
  for i in n:
     for j in n:
       if i==j:

          newarr=np.array(a[i][j])

  #print(newarr) 
diagonal(array1)

newarr=np.array(ai)导致错误显示:#TypeError:对于下面的代码,元组索引必须是整数,而不是字符串

EN

回答 2

Stack Overflow用户

发布于 2018-11-26 17:17:58

如果你知道你的矩阵将是一个正方形的矩阵,你不需要单独接受行和列的输入。你只需要取值n,你的对角线函数看起来就像:

代码语言:javascript
复制
newa=[]
def diag(arr):
    for i,a in enumerate(arr):
        newa[i]=arr[i,i]
票数 0
EN

Stack Overflow用户

发布于 2018-11-26 17:21:37

我确实同意@Gautam,顺便说一下,这里有一个使用内置diagonal函数的变通解决方案:

代码语言:javascript
复制
lst = []
size = int(input('Enter size of sqaure matrix'))
for i in range(1, (size**2)+1):
    lst.append(int(input('Enter ' + str(i) +'th element')))
lst

Enter size of sqaure matrix2
Enter 1th element5
Enter 2th element6
Enter 3th element8
Enter 4th element7
[5, 6, 8, 7]

arr = np.array(lst).reshape(size,size)
arr.diagonal()

[5, 7]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53477795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档