1.改变数组形状
数组的shape
属性返回一个元组,包括维度以及每个轴的元素数量,Numpy 还提供了一个reshape()
方法,它可以改变数组的形状,返回一个新的数组。
例如:
1
|
a = np.array([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]) |
转换成二维数组:
1
|
b = a.reshape(( 2 , 4 )) |
转换成三维数组:
1
|
c = a.reshape(( 2 , 2 , 2 )) |
但是需要注意的是,修改后的数组元素个数与原数组元素个数必须是一致的,不一致会报错。 例如执行b = a.reshape((2,5))
代码会报“ValueError: cannot reshape array of size 8 into shape (2,5)”的错误。
2.索引和切片
在处理数据时,不可避免要对数据进行索引和切片,选择数据的某几行、某几列数据等,Numpy 在这方面也非常强大,具体如下:
一维数组索引和切片一维数组索引和切片比较简单,类似于Python的列表,例如:
1
2
3
4
5
|
a = np.array([ 1 , 2 , 3 , 4 , 5 , 6 ]) # 获取第4个元素 a[ 4 ] # 获取前3个元素 a[: 3 ] |
多维数组索引和切片多维数组有多个轴,那么就需要对每个轴进行索引,此处以二维数组为例:
1
2
3
4
5
|
a = np.array([[ 1 , 2 , 3 ],[ 4 , 5 , 6 ]]) # 获取某一行数据(第二行) a[ 1 ] # 获取第二行第二个数据 a[ 1 , 1 ] |
如果取第0轴前2个元素、第1轴前2个元素,那么切片如下:
1
|
a[: 2 ,: 2 ] |
布尔索引
Numpy 布尔索引指的是根据bool类型True和False确定的索引,例如:
1
2
3
|
a = np.arange( 10 ) b = a< 6 b |
结果输出如下:
1
2
|
array([ True , True , True , True , True , True , False , False , False , False ]) |
通过结果可以看到,元素值小于6的话,布尔索引值为True,否则为False。 如果想要过滤出来符合条件的结果,而不是输出True和False,可以使用a[b]
即a[a<6]
实现。
到此这篇关于Python中的 Numpy 数组形状改变及索引切片的文章就介绍到这了,更多相关Python Numpy 内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://juejin.cn/post/7084256373172617230