我的问题可能看起来太简单了,但我很好奇为什么要在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 == 1
或y-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/