如果我仅切出 1 列与切出多列,为什么 numpy 的行为会有所不同?
Why is numpy's behavior different if I slice out only 1 column vs. if I slice out multiple columns?
如果我有一个名为 data 的 numpy 数组,例如:
[[ 3.6216 8.6661 -2.8073 -0.44699 0. ]
[ 4.5459 8.1674 -2.4586 -1.4621 0. ]
[ 3.866 -2.6383 1.9242 0.10645 0. ]]
我想获取最后一列,我可以通过以下方式将其切出:
data[:,4]
但是,输出会自动“变平”:
[0. 0. 0]
我的期望是它应该给我这个:
[[0]
[0]
[0]]
我知道我可以轻松地重塑它,但我想了解为什么当我 select 一列时 numpy 会自动将其展平。如果我改为 select 多列:
data[:,:4]
我得到了我所期望的:
[[ 3.6216 8.6661 -2.8073 -0.44699]
[ 4.5459 8.1674 -2.4586 -1.4621 ]
[ 3.866 -2.6383 1.9242 0.10645]]
为什么仅切出 1 列与切出多列时 numpy 的行为不同?有什么方法可以使 numpy 切出 1 列的行为不展平数组?
当您使用单个数字进行索引时,该维度将被消除。这就是 NumPy 的设计方式。所以这个:
data[:,4]
表示“给我第 4 列,并将维度数减少 1”。而这个:
data[:,4:5]
表示“给我第 4 列,但保持维数不变。”
如果我有一个名为 data 的 numpy 数组,例如:
[[ 3.6216 8.6661 -2.8073 -0.44699 0. ]
[ 4.5459 8.1674 -2.4586 -1.4621 0. ]
[ 3.866 -2.6383 1.9242 0.10645 0. ]]
我想获取最后一列,我可以通过以下方式将其切出:
data[:,4]
但是,输出会自动“变平”:
[0. 0. 0]
我的期望是它应该给我这个:
[[0]
[0]
[0]]
我知道我可以轻松地重塑它,但我想了解为什么当我 select 一列时 numpy 会自动将其展平。如果我改为 select 多列:
data[:,:4]
我得到了我所期望的:
[[ 3.6216 8.6661 -2.8073 -0.44699]
[ 4.5459 8.1674 -2.4586 -1.4621 ]
[ 3.866 -2.6383 1.9242 0.10645]]
为什么仅切出 1 列与切出多列时 numpy 的行为不同?有什么方法可以使 numpy 切出 1 列的行为不展平数组?
当您使用单个数字进行索引时,该维度将被消除。这就是 NumPy 的设计方式。所以这个:
data[:,4]
表示“给我第 4 列,并将维度数减少 1”。而这个:
data[:,4:5]
表示“给我第 4 列,但保持维数不变。”