Python 从较大的二维阵列中提取每个二维方子阵列的对角线
这是我的第一节编程课,我非常兴奋地学习Python的数据科学。我不知道如何编写一个循环来返回矩阵中的所有对角数。下面是代码,离我有多远?谢谢大家!Python 从较大的二维阵列中提取每个二维方子阵列的对角线,python,arrays,loops,numpy,diagonal,Python,Arrays,Loops,Numpy,Diagonal,这是我的第一节编程课,我非常兴奋地学习Python的数据科学。我不知道如何编写一个循环来返回矩阵中的所有对角数。下面是代码,离我有多远?谢谢大家! import numpy as np cols = 0 matrixA = np.array([[2,0,0], [0,3,0], [0,0,4], [6,0,0], [0,7,0], [0,0,8]]) for rows in range(6): if rows == cols: print(matrixA[rows,
import numpy as np
cols = 0
matrixA = np.array([[2,0,0], [0,3,0], [0,0,4], [6,0,0], [0,7,0], [0,0,8]])
for rows in range(6):
if rows == cols:
print(matrixA[rows, cols])
cols = cols + 1
你不需要像完成这个简单任务那样的繁重的库。在纯python中,您可以使用和作为:
你不需要像完成这个简单任务那样的繁重的库。在纯python中,您可以使用和作为:
为什么会有感冒?它总是和行一样,对吗
for rows in range(6):
print(matrixA[rows,rows])
为什么会有感冒?它总是和行一样,对吗
for rows in range(6):
print(matrixA[rows,rows])
您当前的解决方案不起作用,因为它没有考虑到
matrixA
不是正方形这一事实。你必须注意你的指数不会超出界限。运行它可以提供:
IndexError: index 3 is out of bounds for axis 1 with size 3
这是因为这里允许的cols
的最大值是2
作为替代方案,您可以使用: 如果需要1D结果,请调用:
您当前的解决方案不起作用,因为它没有考虑到
matrixA
不是正方形这一事实。你必须注意你的指数不会超出界限。运行它可以提供:
IndexError: index 3 is out of bounds for axis 1 with size 3
这是因为这里允许的cols
的最大值是2
作为替代方案,您可以使用: 如果需要1D结果,请调用:
首先,问自己“元素2、3、4、6、7、8出现在哪里?”,这将有助于你深入了解元素的含义。首先,问自己“元素2、3、4、6、7、8出现在哪里?”,这将有助于你深入了解元素的含义如果
matrixA
was square,但事实并非如此。如果矩阵是平方的,但事实并非如此。@roganjosh这很有效,谢谢!你能把res代码部分分解一下吗?很抱歉问了这么多问题,我是Python新手,非常感谢在这里得到的大量反馈!谢谢大家!@布兰登,我已经把你和医生联系起来了。np.diag
中有一个offset
参数,允许您指定开始提取对角线元素的行号。我们希望按3步向下移动行(在本例中,range
就是这样做的。range(0,*x.shape)
对于初学者@c来说是非常不透明的代码ᴏʟᴅsᴘᴇᴇᴅ. 他所做的是采用形状
((6,3)
)并将其附加到范围的参数
,这样范围(0,*x.shape)
就变成了范围(0,6,3)->[0,3]
。*
解压元组,因此如果没有它,结果将是,范围(0,(6,3))
不起作用。@roganjosh这很有效,谢谢!你能把res代码部分分解一下吗?很抱歉问了这么多问题,我是Python新手,非常感谢在这里得到的大量反馈!谢谢大家!@布兰登,我已经把你和医生联系起来了。np.diag
中有一个offset
参数,允许您指定开始提取对角线元素的行号。我们希望按3步向下移动行(在本例中,range
就是这样做的。range(0,*x.shape)
对于初学者@c来说是非常不透明的代码ᴏʟᴅsᴘᴇᴇᴅ. 他所做的是采用形状
((6,3)
)并将其附加到范围的参数
,这样范围(0,*x.shape)
就变成了范围(0,6,3)->[0,3]
。*
解压元组,因此如果没有它,结果将是,范围(0,(6,3))
,这不起作用。
print(res.ravel())
array([2, 3, 4, 6, 7, 8])