上回谈到 Numpy数组创建与数组属性 感觉怎么样?其实我这一系列数据分析,是我学习python数据分析的一个笔记,也就是说,如果大家想自学数据分析,可以跟着我的博客来一起学习,可能更新有点慢,但是我尽量赶时间,在数据清洗结束后我会整理一个目录,供大家参考
今天我们分享一下ndarray的基本操作
1.索引
索引是类似于列表下标的一个东西,很easy
一维数组与列表完全一致 多维时同理
一维数组
#创建一个arr1数组,根据下标访问元素
arr1 = np.random.randint(0,10,size=10)
arr1[0],arr[-1]
访问读个元素咋整呢?
#可以使用多个索引,同时获取多个元素组成的子数组
arr1[[1,2]]
这里不上图了,但是要注意,要以列表的方式访问哦
高维数组
# 创建一个高维数组
arr2 = np.random.randint(0,100,size=(3,4))
arr2
我们可以先想一下,高维数组,想访问一个元素,可不可以跟高维列表一样呢?
当然可以homie!!
但是一般不这样?
别问为啥,帅的人都不这样,直接上代码
# 传统的python访问方式
arr2[0][0]
# numpy访问方式,来表达多维数组在各个轴上的取值位置
arr2[0,0]
# 最后一个数
arr2[-1,-1]
似乎这样访问更便捷了有没有
2.切片
一维与列表完全一致 多维时同理
# 普通切片,左闭右开区间
arr1[2:5]
# 从头切到尾,隔两个一切
arr1[::2]
#从下标2切到下标8,隔3个一切
arr1[2:8:3]
高维数组的切片
# 先用[0]将二维数组变为一维数组,再切,但是尽量别用
arr2[0:1][0][0:2]
# 同时在两个维度上切片,先0:1切,再在结果上0:2切
arr2[0:1,0:2]
# 行切片
arr2[0:2]
# 列切片
arr2[:,0:2]
发现不对劲是吗?
行切片就切就完事了,但是!列切片必须要先把行给搞定,所以,如果想行不动,那就给加个:,要么会报错!哦不,会当成列切片来切哈哈哈
3.变形
想想arr2这个3行4列的数组,能不能变变形状?
# 还记得shape属性吗?
arr2.shape
arr2.reshape(2,6)
以后我们在数据清洗的时候,或者机器学习的时候会经常用这个操作
什么?你想reshape成(2,5)?
别忘了,形状可以变,内容不能缺啊,25=34吗?
个数在变形前后一定要保持一致
今天就先这样,下一次我们将来分享级联、切分和副本