09、对ndarray的操作:索引、切片、转置_笔记# 多维数组的索引 取元素的值# axis0 axis1# 索引--->数组的切片# 在各个维度上单独切片,如果某维度都保留,则直接使用:冒号# -*- coding: utf-8 -*-__author__ = 'dongfangyao'__date__ = '2017/12/23 下午4:36'__product__ = 'PyCharm'__filename__ = 'numpy5'import numpy as npa = np.random.random((2, 3, 4))# print(a)# print(a[0][1][1])# print(a[0, 1, 1])# print(a[0][0][1:3])# print(a[0][1][1:3])# print(a[0][2][1:3])# print(a[0, :, 1:3])print('-----')# print(a[0][:].T[1:3].T)print('bool值的索引')b = np.random.random((4, 4, 2))print(b)c = b > 0.5print(c)d = b[c]print(d)复制代码# 注意:numpy中通过切片得到的新数组,只是原来数组的一个视图,因此对新数组# 进行操作也会影响原数组 内存地址的引用还是一样# 布尔值的索引:利用布尔类型的数组进行数据索引,最终返回的结果是对应# 索引数组中数据为True位置的值# True位置的元素取出来形成一个新数组(一维的)# 条件是:b与c数组的shape必须一致# 数据提取 数据清洗用到的方法# 注意:numpy中不能使用python中的and or not操作符# 使用 & | ~来替换# 花式索引:利用整数数组进行索引的方式# ix_函数会产生一个索引器# -*- coding: utf-8 -*-__author__ = 'dongfangyao'__date__ = '2017/12/23 下午4:54'__product__ = 'PyCharm'__filename__ = 'numpy6'import numpy as np# 花式索引:利用整数数组进行索引的方式a = np.arange(32).reshape((8, -1))print(a)print('------')# print(a[1:3]) 连续# print(a[[0, 3, 5]]) 非连续行 连续的列# axis0行 axis1列# 非连续行 非连续列 交叉的值# print(a[[0, 3, 5], [0, 3, 2]])# 非连续行 非连续列 所有的print(a[np.ix_([0, 3, 5], [0, 2, 3])])print('-----')print(a[[0, 3, 5]].T[[0, 2, 3]].T)复制代码# 数组转置与轴对换# 数组转置是指将shape进行重置操作,并将其值重置为原始shape元祖的倒置# 比如原始shape为(2,3,4) 则转置后为(4,3,2)# 对于二维数组矩阵而言,数组的转置就是矩阵的转置# 可以通过调用数组的transpose函数或T属性进行数组转置操作# -*- coding: utf-8 -*-__author__ = 'dongfangyao'__date__ = '2017/12/23 下午5:13'__product__ = 'PyCharm'__filename__ = 'numpy7'import numpy as np# shape ()a = np.arange(24).reshape((2, 3, 4))print(a)# b = a.T# b = np.transpose(a)b = a.transpose()print(b, b.shape)复制代码