详解Numpy扩充矩阵维度(np.expand_dims, np.newaxis)和删除维度(np.squeeze)的方法
作者:* star * 发布时间:2023-02-13 22:24:24
在操作矩阵的时候,不同的接口对于矩阵的输入维度要求不同,输入可能为1-D,2-D,3-D等等。下面介绍一下使用Numpy进行矩阵维度变更的相关方法。主要包括以下几种:
1、np.newaxis扩充矩阵维度
2、np.expand_dims扩充矩阵维度
3、np.squeeze删除矩阵中维度大小为1的维度
np.newaxis,np.expand_dims扩充矩阵维度:
import numpy as np
x = np.arange(8).reshape(2, 4)
print(x.shape)
# 添加第0维,输出shape -> (1, 2, 4)
x1 = x[np.newaxis, :]
print(x1.shape)
# 添加第1维, 输出shape -> (2, 1, 4)
x2 = np.expand_dims(x, axis=1)
print(x2.shape)
输出结果:
(2, 4)
(1, 2, 4)
(2, 1, 4)
np.squeeze降低矩阵维度:
"""
squeeze 函数:从数组的形状中删除单维度条目,即把shape中为1的维度去掉
用法:numpy.squeeze(a,axis = None)
1)a表示输入的数组;
2)axis用于指定需要删除的维度,但是指定的维度必须为单维度,否则将会报错;
3)axis的取值可为None 或 int 或 tuple of ints, 可选。若axis为空,则删除所有单维度的条目;
4)返回值:数组
5) 不会修改原数组;
"""
import numpy as np
print("#" * 40, "原始数据", "#" * 40)
x = np.arange(10).reshape(1, 1, 10, 1)
print(x.shape)
print(x)
print("#" * 40, "去掉axis=0这个维度", "#" * 40)
x_squeeze_0 = np.squeeze(x, axis=0)
print(x_squeeze_0.shape, x_squeeze_0)
print("#" * 40, "去掉axis=3这个维度", "#" * 40)
x_squeeze_3 = np.squeeze(x, axis=3)
print(x_squeeze_3.shape, x_squeeze_3)
print("#" * 40, "去掉axis=0, axis=1这两个维度", "#" * 40)
x_squeeze_0_1 = np.squeeze(x, axis=(0, 1))
print(x_squeeze_0_1.shape, x_squeeze_0_1)
print("#" * 40, "去掉所有1维的维度", "#" * 40)
x_squeeze = np.squeeze(x)
print(x_squeeze.shape, x_squeeze)
print("#" * 40, "去掉不是1维的维度,抛异常", "#" * 40)
try:
x_squeeze = np.squeeze(x, axis=2)
print(x_squeeze.shape, x_squeeze)
except Exception as e:
print(e)
输出结果:
######################################## 原始数据 ########################################
(1, 1, 10, 1)
[[[[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]]]]
######################################## 去掉axis=0这个维度 ########################################
(1, 10, 1) [[[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]]]
######################################## 去掉axis=3这个维度 ########################################
(1, 1, 10) [[[0 1 2 3 4 5 6 7 8 9]]]
######################################## 去掉axis=0, axis=1这两个维度 ########################################
(10, 1) [[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]]
######################################## 去掉所有1维的维度 ########################################
(10,) [0 1 2 3 4 5 6 7 8 9]
######################################## 去掉不是1维的维度,抛异常 ########################################
cannot select an axis to squeeze out which has size not equal to one
参考链接
来源:https://blog.csdn.net/cxx654/article/details/105762021/


猜你喜欢
- Python安装新包,pip是很好用的安装工具。pip list 可以查询所有已安装的包和版本。怎么知道本地安装包的版本是否有可以更新的新版
- 使用conda安装requirement.txt的扩展包当你在GitHub上下载了代码时,可以看到有一个requirements.txt文件
- --====================================================================
- python3.6在运行tkinter时要选择 run as Python unit-test,否则报错 ModuleNotFoundErr
- 自动发送邮件能应用于许多场景,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了。为什
- 前言最近有网友私信我,问如何把多张图片合成一张马赛克图片的样子说是女儿从出生到现在,所有的照片,大概有上百张,所以想使用这些照片合成一张,当
- 本文实例讲述了PHP登录验证功能。分享给大家供大家参考,具体如下:登录界面具体实现方法如下:login.html<!DOCTYPE h
- 如下所示:#! /usr/bin/python3# coding = utf-8# from PyQt5 import QtGui,QtCo
- 前言闲暇时间抽个空写了个三国杀武将手册的小程序,中间有个需求设计的是合成武将皮肤图、竖排的武将姓名、以及小程序码,然后提供保存图片到相册,最
- 图片太大了,上百张图用photoshop改太慢,就想到用python写个简单的批处理。功能简单就是把原图按比例缩小# -*- coding:
- SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
- 本文实例讲述了python抽象基类用法。分享给大家供大家参考。具体如下:定义抽象类,需要使用abc模块,该模块定义了一个元类(ABCMeat
- 1.说明:复制表(只复制结构,源表名:a 新表名:b)SQL: select * into b&nb
- 背景:使用python脚本传递参数在实际工作过程中还是比较常用,以下提供了好几种的实现方式:一、使用sys.argv的数组传入说明:使用sy
- 依赖项目基础配置使用 vue-cli 生成自适应方案核心: 阿里可伸缩布局方案 lib-flexiblepx转rem:px2rem,它有we
- 前言在进行接口测试时,有些接口字段在不需要测试的时候往往是被写死的,但是你不能保证它就不会出现问题,所以在平时测试的时候就需要覆盖各种情况,
- 本文实例讲述了django框架使用模板。分享给大家供大家参考,具体如下:models.py:from django.db import mo
- 项目地址这个项目很神奇,直接将node.js项目打包成windows可以直接执行的exe文件(也支持FreeBSD、linux、macos、
- 效果图动画代码这里 只提供图中购物车动画代码,不提供以上点餐界面(需要点餐界面 点击这里:Gitee仓库)。在触发代码中使用 this.ca
- 前言平时我们在接收后端返回的json对象通常是一个字符串类型的object,所以一般我们要对这个object进行类型转化后,我们才能使用ob