Geeker_odd 发表于 2021-6-11 15:26:57

矩阵切片

请教群里高手,这个矩阵切片y[:2, 1:2]是什么?我觉得是不是与列表一样,是第0项的第2项,和第1项的第2项?如果是这样,不应该是[ ]才对吗?

>>> import numpy as np
>>> y = np.arange(10)
>>> y
array()
>>> y = y
>>> y
array()
>>> y = y.reshape(3,3)
>>> y
array([,
       ,
       ])
>>> print(y[:2,1:2])
[
]

阿奇_o 发表于 2021-6-11 17:06:30

本帖最后由 阿奇_o 于 2021-6-11 17:08 编辑

其实,2D矩阵说白了就是“行列”,你只要理解numpy的矩阵里 哪些是行,哪些是列,就能较好地理解其接下来的各种操作。此为关键一。
关键二,切片 就是分别对行和列进行切片,
比如,你这里 y[:2, 1:2] 就是 对行切出第1,2行,对列切出第2列(注意下标索引一般都是左闭右开)
所以,最后 切出来的结果是 arrray([, ] ),打印效果则是你最后那样。

OK,我想你应该可以理解了。。

ps: 或许你们老师应该先教pandas模块,然后再学numpy 。。 {:10_250:}
这样应该更好理解“矩阵”,因为pandas较少涉及抽象的矩阵,更多的是如何操作行列等实用操作。

Twilight6 发表于 2021-6-11 18:43:06

array[行,列]   默认都是全部逗号前面放行,逗号后面是列
切记 行和列 下标也都是从零开始的 也就是 第一行 对应的下标是0
下面就直接举例子了~

取单行:
array# 这里是取第二行
也可以写成这样:
array# 意思是取第2行 所有列

取多行:
array # 这里是从第3行 至 最后行
也可以这样些:
array

取不连续多行:
array[] # 取 2,4,6,8,10行
也可以这样:
array[,:] # 取 2,4,6行的所有列

取列正好和行位置互换下, 意思不变:
array[:,1]# 取所有行的第2列

取连续的多列:
array[:,3:] # 取第4列后面的每一列

取不连续多列:
array[:,] #取第 2,3,4列

取值是:
array # 取第三行 第6列的值
取多个值:
array[(0,2),(4,6)] # 取第1行第5列的值 和 第3行第7列的值

Geeker_odd 发表于 2021-6-12 09:42:25

非常清楚,学习了,谢谢!
页: [1]
查看完整版本: 矩阵切片