型 到目前为止,这是标准的Python。由数组自己的代码来理解元组参数。列表会抱怨元组TypeError: list indices must be integers or slices, not tuple,但numpy数组可以使用它。(numpy.index_tricks有一些类使用这种元组技巧来产生一些伪索引语法。 有关如何使用基本索引的更多详细信息,请访问: https://numpy.org/doc/stable/user/basics.indexing.html#basic-indexing 我们可以使用数组来选择相同的值,但这是advanced indexing:
In [233]: arr[np.array([2,3])[:,None], np.array([0,1])]
Out[233]:
array([[11, 12],
[16, 17]])
2条答案
按热度按时间uajslkp61#
问'怎么样'有点模棱两可;你需要多少细节?
字符串
问题的这一部分表明您已经可以使用2部分数组索引:[12][13][14][15][16][17]18][19][1
但是如果我们更正第一个索引,选择两行和两列的模式变得更加明显:
型
然后可以组合成一个表达式:
型
对于切片,这是
basic indexing
,结果是view
:型
这与
arange
相同,它被重塑为arr
(它本身是view
)。我们可以通过数组属性的dict显示来进一步探索该视图:
型
x
数组具有相同的步幅,但形状较小。data
值是一个“指针”,指向数组在arange
数字中的“开始”位置。x
值有一个80字节的偏移量(.800-.720)。这是2*5*8
字节(2行8字节整数)。这就是索引所要做的:返回一个新的数组对象,包含这些形状、步幅和数据指针值。更详细地说:
arr[2:4, :2]
被解释器翻译为对getitem
方法的调用,带有一个切片元组:型
到目前为止,这是标准的Python。由数组自己的代码来理解元组参数。列表会抱怨元组
TypeError: list indices must be integers or slices, not tuple
,但numpy数组可以使用它。(numpy.index_tricks
有一些类使用这种元组技巧来产生一些伪索引语法。有关如何使用基本索引的更多详细信息,请访问:
https://numpy.org/doc/stable/user/basics.indexing.html#basic-indexing
我们可以使用数组来选择相同的值,但这是
advanced indexing
:型
结果不再是视图,它有自己的数据缓冲器。索引过程更加复杂。
s1ag04yj2#
[2:4]选择第2行和第3行(最上面的一行是0)。始终排除范围的末尾,因此未选择第4行。
[0:2]选择列0和1。