我尝试同时打印这两个:
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]
等同吗?
答案 0 :(得分:3)
在输出方面等效,是的,但是在引擎盖下发生的事情方面……否。
对于X_train[0,:3]
,有一个__getitem__
调用该数组。在第二种情况下,有一个tmp = X_train[0]
和一个__getitem__
调用,它们返回一个临时数组(通常是原始数组的视图……您的里程可能会有所不同),随后是随后的tmp[:3]
,是一个额外的__getitem__
调用-开销不那么多,但是如果您可以做得更好,为什么会变得更糟?