我是一名高中生,正在查看一些代码,我发现了一些类似
的内容a = x[:,0:4]
和x是一个二维数组。我知道a [:]引用数组a中的所有对象,因此对于x [:,0:4],它是指x的所有行和索引为0,1,2,3的列,不包括带索引的列4?
只是试图确认这是如何工作的,因为我已经在几种类型的代码中看到了它,并且只是想确定。
答案 0 :(得分:1)
你是对的。此a = x[:,0:4]
选择前四列。
示例:
>>> a = np.arange(25).reshape(5, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
您可以跳过0
,因为a[:,:4]
与a[:,0:4]
相同:
>>> a[:,:4]
array([[ 0, 1, 2, 3],
[ 5, 6, 7, 8],
[10, 11, 12, 13],
[15, 16, 17, 18],
[20, 21, 22, 23]])
您可以随时思考:"第一维第一维,第二维第二维等等。"在2D情况下,第一个维度是行,第二个维度是列。
答案 1 :(得分:0)
是的,这被称为切片表示法,而numpy数组也可以使用Python的切片表示法,所以
>>>x = np.arange(25).reshape(5, 5)
>>>a = x[:, 0:4]
>>>a
array([[ 0, 1, 2, 3],
[ 5, 6, 7, 8],
[10, 11, 12, 13],
[15, 16, 17, 18],
[20, 21, 22, 23]])
如果您使用切片表示法,x
将是a
的视图而不是副本,因此如果您更改数组x
中的值,则该值也会更改在a
。
>>>x[1,1] = 1000
>>>a
array([[ 0, 1, 2, 3],
[ 5, 1000, 7, 8],
[ 10, 11, 12, 13],
[ 15, 16, 17, 18],
[ 20, 21, 22, 23]])