python - 如果我只切出 1 列与切出多列,为什么 numpy 的行为会有所不同?

标签 python arrays numpy numpy-slicing

如果我有一个名为 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]]
我知道我可以轻松地 reshape 它,但我想了解为什么当我选择一列时 numpy 会自动展平它。如果我选择多列:
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 列,但保持维数不变。”

关于python - 如果我只切出 1 列与切出多列,为什么 numpy 的行为会有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62978096/

相关文章:

python - 如何将多个 .npy 文件加载到单个 numpy 数组中

python - 如何从某一行开始将 numpy 数组写入 .txt 文件?

javascript - 选择数组数组中的下一个数组

javascript - 动态选择产品变体,比较 2 个阵列

python - 合并/平均比给定半径更近的邻居

python - input() 命令不适用于 Sublime Text 3

php - 如何在 PHP 中使用爆炸并获取一行中的第一个元素?

python - 从字典中获取一个值并在 Python 中插入一个新字典

python - wand - 文本换行 - 基于图像文件大小

python - while循环中条件改变了,是否结束?