Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从较大的二维阵列中提取每个二维方子阵列的对角线_Python_Arrays_Loops_Numpy_Diagonal - Fatal编程技术网

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,

这是我的第一节编程课,我非常兴奋地学习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, 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])