我的问题可能看起来太简单了,但我很好奇为什么要在Python中使用它。

假设我们定义了一个大小为(4,3)的数组:

import numpy as np
a=np.random.randint(15,size=(4,3))


结果将如下所示:

array([[ 7,  6,  1],
       [ 5,  3,  6],
       [12, 10, 11],
       [ 1,  3,  4]])


之间的区别是什么?

a[0]

Result:
array([7, 6, 1])




a[0:1]

Result:
array([[7, 6, 1]])


由于它们都返回矩阵的相同部分:

7, 6, 1


我确实知道区别在于形状,因为前者的形状为(3,),而后者的尺寸为(1,3)。
但是我的问题是,为什么我们需要具有这种形状。如果您熟悉Matlab,则使用冒号指定范围会给您两行,但是在Python中,它将返回具有不同形状的相同信息。有什么意义?有什么好处?

最佳答案

原因是您可以确信array [x:y]总是返回原始数组的子数组。这样就可以在其上使用所有数组方法。说你有

map(lambda1, array[x:y])


即使y-x == 1y-x == 0,也可以确保从array[x:y]返回一个数组,并且可以对其进行映射。想象一下,如果array[1:2]相反返回了单个项目,即array[1]。然后,以上代码的行为取决于array [1]是什么,并且可能不是您想要的。

关于python - Python中array [0]和array [0:1]有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56031261/

10-14 18:29
查看更多