Python:x [i ,:]和x [i] [:]之间有什么区别

时间:2018-09-25 05:29:15

标签: python arrays python-3.x numpy indexing

我尝试同时打印这两个:

print(X_train[0])
print(X_train[0,:])

#Output
[ 59.  62.  63. ... 123.  92.  72.]
[ 59.  62.  63. ... 123.  92.  72.]

我认为这些是相同的,所以我尝试了这个:

print(X_train[0,:3])
print(X_train[0][:3])

#Output
[59. 62. 63.]
[59. 62. 63.]

这两个X_train[0,:3]X_train[0][:3]等同吗?

1 个答案:

答案 0 :(得分:3)

在输出方面等效,是的,但是在引擎盖下发生的事情方面……否。

对于X_train[0,:3],有一个__getitem__调用该数组。在第二种情况下,有一个tmp = X_train[0]和一个__getitem__调用,它们返回一个临时数组(通常是原始数组的视图……您的里程可能会有所不同),随后是随后的tmp[:3],是一个额外的__getitem__调用-开销不那么多,但是如果您可以做得更好,为什么会变得更糟?