numpy数组操作
# 修改数组形状 # reshape 不改变数据的条件下修改形状 # flat 数组元素迭代器 # flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组 # ravel 返回展开数组 a = np.arange(8) a=a.reshape(2,4) for element in a.flat: print (element) print (a.flatten()) print (a.ravel())
# 翻转数组 # transpose 对换数组的维度 # ndarray.T 和 self.transpose() 相同 # rollaxis 向后滚动指定的轴 # swapaxes 对换数组的两个轴 a = np.arange(12).reshape(3,4) print (np.transpose(a)) print (a.T) b = np.rollaxis(a,2,0) # 将轴 2 滚动到轴 0(宽度到深度) print (np.swapaxes(a, 2, 0)) #现在交换轴 0(深度方向)到轴 2(宽度方向)
# 修改数组维度 # broadcast 产生模仿广播的对象 # broadcast_to 将数组广播到新形状 # expand_dims 扩展数组的形状 # squeeze 从数组的形状中删除一维条目 x = np.array([[1], [2], [3]]) y = np.array([4, 5, 6]) b = np.broadcast(x,y) # 对 y 广播 x np.broadcast_to(a,(4,4)) # 广播到新形状 y = np.expand_dims(x, axis = 0) #升维 y = np.squeeze(x) #降维
# 连接数组 # concatenate 连接沿现有轴的数组序列 # stack 沿着新的轴加入一系列数组。 # hstack 水平堆叠序列中的数组(列方向) # vstack 竖直堆叠序列中的数组(行方向) a = np.array([[1,2],[3,4]]) b = np.array([[5,6],[7,8]]) np.concatenate((a,b),axis = 1) #沿轴 1 连接两个数组 print(np.stack((a,b),0)) #沿轴 0 堆叠两个数组 print(np.hstack((a,b))) #水平堆叠 print(np.vstack((a,b))) #垂直堆叠
# 分割数组 # split 将一个数组分割为多个子数组 # hsplit 将一个数组水平分割为多个子数组(按列) # vsplit 将一个数组垂直分割为多个子数组(按行) a = np.arange(9) b = np.split(a,3) #将数组分为三个大小相等的子数组 b = np.split(a,[4,7]) #将数组在一维数组中表明的位置分割,0~3,4~7,8~ a = np.arange(16).reshape(4, 4) b = np.split(a,2) #默认0轴分割,水平 b = np.split(a,2,1) #默认1轴分割,垂直 b = np.hsplit(harr, 3) #水平分割 b = np.vsplit(a,2) #垂直分割
# 数组元素的添加与删除 # resize 返回指定形状的新数组 # append 将值添加到数组末尾 # insert 沿指定轴将值插入到指定下标之前 # delete 删掉某个轴的子数组,并返回删除后的新数组 # unique 查找数组内的唯一元素 a = np.array([[1,2,3],[4,5,6]]) b = np.resize(a, (3,2)) b = np.append(a, [7,8,9]) b = np.insert(a,3,[11,12]) #未传递 Axis 参数。 在删除之前输入数组会被展开 b = np.delete(a,5)) u = np.unique(a)
天道酬勤 循序渐进 技压群雄