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)         
posted @ 2022-02-21 16:37  wuyuan2011woaini  阅读(35)  评论(0编辑  收藏  举报