Python np.array(或vstack)列切片如何工作?
为什么在: 第一列和第二列的结果为:Python np.array(或vstack)列切片如何工作?,python,numpy,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]] 那么,为什么: 第一行t[1://code>不是[4 5 6]和 第一列t[:0]不是[1,4]和 第二列t[:1]不是
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]]
那么,为什么:
- 第一行
t[1://code>不是
和[4 5 6]
- 第一列
不是t[:0]
和[1,4]
- 第二列
不是t[:1]
和[2,5]
- 第二列
不是t[:3]
? 如何将其概念化[3,6]
t
是一个2维阵列。在这种情况下,t.shape
应该是(2,3)
。第一个dim2
用于行,第二个dim3
用于列
请注意,每个索引应该用逗号分隔,如t[0,1]
。这表示第一行和第二列的元素
如果只使用一个索引,如t[1]
,numpy将其视为行的索引。所以通过t[1,:]
可以得到相同的结果
- 第一行t[1:]不是[4 5 6]
[0://code>和[1://code>应该具有类似的结果。[1:]只是只选择一行的特殊情况<代码>[4 5 6]
可以作为t[1,:]
进行切片
- 第一列t[:0]不是[1,4]和
如上所述,当只有一个索引馈入2维数组时,该索引被视为行。空结果是因为[:0]不表示任何内容。您可以在列表(范围(0))
中看到类似的现象
- 第二列t[:1]不是[2,5]和
如果要获取第二列,请键入t[:,1]
- 第二列t[:3]不是[3,6]李>
->这应该是t[;,2]
t
是2d,(2,3)。检查其形状
。所有索引都在第一个维度(行)上。如果要选择整行或整列,请尝试[:,1]
,[1,:]等。请重新阅读有关索引和索引的文档slices@hpaulj感谢您的评论,您的评论很有帮助,您提到缺少coma会使1dt[1,:]
和t[1:,:]
上的索引产生类似的结果,但是形状不同。@hpaulj@dkato 1)但是为什么t[0:
生成整个二维数组而t[1:
只生成第二行呢?2) 为什么t[2://code>返回空列表[]
(没有3、4、5等行)?这不应该有错误吗?t[0://code>返回一组从0到结尾的行,作为2维数组。并且t[1:][/code>返回从1开始到结束的行。请使用3x3数组,如t=[1 2 3],[4 5 6],[7,8,9]]
并检查t[1:][/code>是否生成2x3数组。@dkato感谢接受。请将此评论添加到已接受的答案中
[[1 2 3]
[4 5 6]]