numpy-P[(n),(m)]和P[[n],[m]]之间的指数行为差异 问题:

numpy-P[(n),(m)]和P[[n],[m]]之间的指数行为差异 问题:,numpy,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[

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

这是因为要创建仅包含一个元素的元组,需要添加逗号

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

您可以尝试以下方法:

print(type((0)))
print(type((0,)))
输出:

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


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

numpy
就可以区分索引外层的元组和列表,即
a[(0,1)]
不同于
a[[0,1]]
。但是
a[[0],[1]]
a[(0,),(1,)]
没有区别。请注意我使用的逗号。