我有一个像这样的numpy数组:
candidates =
array([[1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0],
[0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,
0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1],
[1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0]])
我不明白candidates[0]有什么区别:
candidates[0] =
array([1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0]
candidates[0].shape = (34,)
还有candidates[0:1]
:
candidates[0:1] =
array([[1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0,
0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0]])
candidates[0:1].shape = (1, 34)
我认为两者应该给出完全相同的结果,因为后面的 candidates[0:1]
应该只表示第一个元素,对吧?那么,这两者之间到底有什么区别呢?
candidates[0]
表示第一个元素(在本例中,即第一行);candidates[0:1]
表示前一个元素的集合(在本例中,即只包含第一行的二维数组)。这就是形状不同的原因。比较一下lst = [1,2,3]
和lst[0]
与lst[0:1]
:其中一个是1
,另外一个是[1]
。 - abarnert[0]
和[0:1]
之间的区别。我只是需要理解后者会产生一个二维数组。不知道是否应该从问题中删除“大小”这个词以避免混淆?或者如果您认为您可以改进我的措辞,请继续,因为英语不是我的母语哈哈。谢谢! - RezAm(1, 34)
让你感到困惑,还是因为[0:1]
返回一个二维数组让你感到困惑? - abarnert