为什么在:
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/