numpy - P[(n),(m)] 和 P[[n],[m]] 之间的索引行为差异

时间:2021-02-18 23:31:20

标签: numpy

问题

P[(n),(m)]P[[n],[m]] 有什么区别?我原以为他们都选择了一个元素,因此是一个标量,但 ()[] 产生不同的形状。 () 的标量和 [] 的数组。

这背后的设计决策和想法是什么?

import numpy as np
a = np.array(1).reshape(1, -1)
print(a)
---
[[1]]

b = a[
    (0),
    (0)
]
print(b)
print(b.shape)
print(b.ndim)
---

1
()
0

c = a[
    [0],
    [0]
]
print(c)
print(c.shape)
print(c.ndim)
---
[1]
(1,)
1

1 个答案:

答案 0 :(得分:1)

这是因为为了创建一个只有一个元素的元组,你需要添加一个逗号。

b = a[(0,), (0,)] 返回与 c = a[[0],[0]] 相同的结果。

你可以试试这个:

print(type((0)))
print(type((0,)))

输出:

<class 'int'>
<class 'tuple'>

如果您只想选择一个元素,只需执行 a[0,0]