我在python脚本list[:, 1]
中遇到了这一点,我正在尝试弄清楚逗号的作用。
发布于 2014-01-16 23:45:41
一般而言:
foo[somestuff]
调用__getitem__
或__setitem__
。(还有__getslice__
和__setslice__
,但它们现在已被弃用,因此我们不再讨论它们)。现在,如果somestuff
中有一个逗号,python将向底层函数传递一个tuple
:
foo[1,2] # passes a tuple
如果有:
,python将传递一个分片:
foo[:] # passes `slice(None, None, None)`
foo[1:2] # passes `slice(1, 2, None)`
foo[1:2:3] # passes `slice(1, 2, 3)
foo[1::3] # passes `slice(1, None, 3)
希望你能明白这一点。现在,如果有一个逗号和一个冒号,python将传递一个包含切片的元组。在您的示例中:
foo[:, 1] # passes the tuple `(slice(None, None, None), 1)`
对象(foo
)对输入做什么完全取决于对象。
发布于 2018-03-05 09:55:24
发布于 2020-11-08 04:21:21
在某种意义上,逗号分隔您尝试从中选择的数组的不同维度。
假设我有一个二维数组
my_array = numpy.array([[1,2,3],
[4,5,6],
[7,8,9]])
通过这样做,我可以选择行(0和1)和列(1和2):
# rows | cols
print(my_array[0:2, 1:3]) # prints [[2 3]
[5 6]]
https://stackoverflow.com/questions/21165751
复制相似问题