python - np.array(或 vstack)列切片如何工作?

标签 python numpy

为什么在:

import numpy as np
a = [1, 2 ,3]
b = [4, 5, 6]
t= np.array(([a,b])
print(t[1:])
print(t[:0])
print(t[:1])
print(t[:2])

第一列和第二列的结果是:

[[4 5 6]]
[]
[[1 2 3]]
[[1 2 3]
 [4 5 6]]

如果数组是:

[[1 2 3]
 [4 5 6]]

为什么:

  • 第一行 t[1:] 不是 [4 5 6] 并且
  • 第一列 t[:0] 不是 [1, 4] 并且
  • 第二列 t[:1] 不是 [2, 5] 并且
  • 第二列 t[:3] 不是 [3, 6] ? 如何理解这一点?

最佳答案

在您的代码中,t 是一个二维数组。在本例中,t.shape 应为 (2, 3)。第一个暗淡 2 用于行,第二个暗淡 3 用于列。

请注意,每个索引应该用逗号 , 分隔,例如 t[0, 1]。这表示第一行第二列的元素。

如果仅使用一个索引,例如 t[1],numpy 会将其视为行索引。因此,您可以通过 t[1, :] 得到相同的结果。

  • first row t[1:] is not [4 5 6]

这可能来自于 [0:][1:] 应该具有相似结果的约束。 [1:] 只是一种特殊情况,仅选择一行。 [4 5 6] 可以切片为 t[1 ,:]

  • first column t[:0] is not [1, 4] and

如上所述,当只有一个索引被输入 2-dim 数组时,该索引将被视为行。结果为空是因为 [:0] 没有表示任何内容。您可以使用 list(range(0)) 看到类似的现象。

  • second column t[:1] is not [2, 5] and

如果您想获取第二列,请输入t[:, 1]

  • 第二列 t[:3] 不是 [3, 6] ?

-> 这应该是 t[;, 2]

关于python - np.array(或 vstack)列切片如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47485606/

相关文章:

python - 无法分配ndarray

python - 如何在 Flask 微框架中使用 Neo4j-embedded for Python(线程)?

python - pandas 在一个键和另一列内的一列值上进行左连接

python - 重用现有的 numpy 数组还是创建一个新数组?

python - 向 3 channel 图像中的每个 channel 添加相同的值?

python - 如何通过 numpy distutils 链接到 FORTRAN 库

python - matplotlib 中的 2d hsv 颜色空间

python - Django 查看返回率与产量?

python - 为什么 python2 显示\r(原始转义)而 python3 不显示?

python - 交换 Numpy 数组的切片