因此,我从3个嵌套列表中创建了一个数组(至少我认为这是3个列表中的数组),我想访问其中的三个对角元素。我已经创建了数组,但是如何访问其中的三个对角线元素?
from numpy import *
test1 = arange(27).reshape(3,3,3)
test1
结果:
array([[[ 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]]])
答案 0 :(得分:0)
这是一种列表理解方法:
const EwdsUserTable = (props) => {
let counter = 0;
let ewdsData = props.data;
if (ewdsData) {
var ewdsUserRows = ewdsData.map(function (ewdsUser) {
return (
<EwdsUserRow ewdsUser={ewdsUser} key={counter++} />
);
});
}
return (
<div className="ewdsUserTable" >
<table id="mytable" className="table table-striped table-bordered table-condensed fixed">
<caption>EWDS Users</caption>
<thead>
<tr>
<th className="sort" type="string">User Name</th>
<th className="sort" type="string">Email Address</th>
<th>Pwd Changed</th>
<th type="date">Last Logon</th>
<th>Locked</th>
<th className="sort" type="string">Disabled</th>
<th></th>
</tr>
</thead>
<tbody>
{ewdsUserRows}
</tbody>
</table>
</div>
);
答案 1 :(得分:0)
有几种方法可以实现您的目标。在这里,我将重点介绍布尔掩码的使用。
首先创建布尔3x3单位矩阵:即对角线为True,而每个对角线条目均为False。 然后将布尔值蒙版覆盖在原始ndarray上以获得对角线。
import numpy as np
test1 = np.arange(27).reshape(3,3,3)
>>> diag = np.eye(3, dtype=bool)
>>> test1[:, diag]
array([[ 0, 4, 8],
[ 9, 13, 17],
[18, 22, 26]])
如您所见,这给出了一个二维数组,其中每一行是第零个,第一个和第二个的对应对角线 3d阵列中的2d阵列。
顺便说一句,避免使用import *
,这会引起很多麻烦,因为如果破坏名称空间抽象,您
有。在上面的示例中,如果numpy定义了diag
函数或变量,该怎么办?如果在numpy之后导入另一个包并且恰好具有其自己的arange
函数,则同样,您将掠过numpy的arange函数。
优先选择显式导入而不是星级导入。