1)一维ndarray的索引
一维ndarray的索引方法很简单 , 与list的索引方法一致 , 相关案例在书上有展示 , 这里不再赘述 。
2)多维ndarray的索引
多维的每一个维度都有一个索引 , 各个维度的索引之间用逗号隔开 , 例如:arr[ [维度1(行)] , [维度2(列)] ] 。
代码清单如下:
import numpy as npprint(np.arange(10))
输出:[0 1 2 3 4 5 6 7 8 9]
arrnp.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])print('n',arr)
输出:
[[ 1 2 3 4 5]
[ 4 5 6 7 8]
[ 7 8 9 10 11]]
#访问第0行中第3列和第4列元素print('切片结果:',arr[0,3:5])
输出:
切片结果:[4 5]
#访问第1行和第二行中第2列、第3列和第4列的元素print('切片结果:n',arr[1:,2:])
输出:
切片结果:
[6 7 8]
[9 10 11]
#访问第2列的元素print('切片结果:',arr[:2])
输出:
切片结果:[3 6 9]
ndarray在索引与切片的时候除了使用整形的数据外 , 还可以使用布尔型 , 代码清单如下:
# 索引第1、3行中第2列的元素 。Define true 1, define false 0mask=np.array([1, 0, 1], dtype=np.bool)print(arr[mask, 1])
输出:
[2 8]
3)花式索引
花式索引是一个Numpy术语 , 是在基础索引方式之上衍生出的功能更强大的索引方式 。它能够利用整数ndarray进行索引 。
在这节的学习中 , 发现一个有趣的问题:在使用np.empty函数时 , 本想用arr = np.empty((4,7))创建一个空的多维数组 , 但是返回的结果是这样:
文章插图
语法格式数值等都没有什么错误的情况下 , 初步怀疑是函数本身的原因 , 于是用help()函数查看它的详细介绍 , 竟然查到了:
文章插图
数据类型是可选且默认值是numpy.float64 。(好家伙 , 书上可没告诉我)所以只需在后面选择int就行 。
arr = np.empty((4,7),int)print(arr)
输出:文章插图
另一个问题是关于ix函数生成区域索引器的问题 , 代码如下:
arr = np.array([np.arange(i*4, i*4+4) for i in np.arange(6)])print('创建的二维ndarray arr为:n', arr)
输出:文章插图
#利用np.ix函数将两个一维的整数ndarray转化为方形区域的索引器print('使用ix成片索引arr结果为:n', arr[np.ix_([5, 1, 4, 2], [3, 0, 1, 2])])
输出:文章插图
out[15]为什么会返回这样一个结果?是因为ix函数结果的排序是基于[5,1,4,2],[3,0,1,2]两个数组产生的笛卡尔积 , 即(5,3),(5,0),(5,1),(5,2);(1,3),(1,0),(1,1),(1,2);(4,3),(4,0),(4,1),(4,2);(2,3),(2,0),(2,1),(2,2) 。然后按照索引(5,3),(5,0),(5,1),(5,2)得到第0行元素:23 20 21 22 , 之后的以此类推 。
02 ndarray的基础操作ndarray的基础操作包括设置ndarray形状、展平ndarray、组合ndarray、分割ndarray、ndarray的排序与搜索 , 以及ndarray的字符串操作等 。
- 设置ndarray形状
- 通过reshape方法改变ndarray形状
- 通过resize方法改变ndarray形状
- 通过修改shape属性改变ndarray维度
- 使用ravel方法展平ndarray
- 使用flatten方法展平ndarray
- 使用hstack函数实现ndarray横向组合
- 使用vstack函数实现ndarray纵向组合
- 使用concatenate函数组合ndarray
- 使用dstack函数组合ndarray
- 使用hsplit函数实现ndarray横向分割
- 使用vsplit函数实现ndarray纵向分割
- 使用split函数分割ndarray
- 使用dsplit函数实现ndarray深度分割
- .swapaxes(ax1,ax2):将数组n个维度中两个维度进行调换
- .astype(new_type):一定会创建新的数组(原始数据的一个拷贝) , 即使两个类型一致
推荐阅读
- 显示器高刷屏比低刷屏到底强多少?看这一目了然
- 砖红色搭配什么颜色最好看?
- Java分布式锁看这篇就够了
- 看球别忘饮茶保健,日常饮茶有哪些注意事项
- 验孕棒怎样看怀孕?
- 护肤品|别只看推荐 看她们自己用什么护肤品 美妆博主自用8款护肤品
- 香肠晾晒几天可以吃?
- 小米|远程看家神器!一图看懂小米智能家庭屏 10:到手949元
- |女子在湖边钓鱼不成功,直接起身跳舞看呆钓鱼,网友:这是鱼媛?
- 警察看管犯人犯人跑了 古代流放犯人,主要流放到哪些地方?