np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴


Posted in Python onNovember 30, 2019

如下所示:

>> type(np.newaxis)
NoneType
>> np.newaxis == None
True

np.newaxis 在使用和功能上等价于 None,查看源码发现:newaxis = None,其实就是 None 的一个别名。

1. np.newaxis 的实用

>> x = np.arange(3)
>> x
array([0, 1, 2])
>> x.shape
(3,)

>> x[:, np.newaxis]
array([[0],
    [1],
    [2]])

>> x[:, None]
array([[0],
    [1],
    [2]])

>> x[:, np.newaxis].shape
 (3, 1)

2. 索引多维数组的某一列时返回的是一个行向量

>>> X = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
>>> X[:, 1]
array([2, 6, 10])    % 这里是一个行
>>> X[:, 1].shape    % X[:, 1] 的用法完全等同于一个行,而不是一个列,
(3, )

如果我们索引多维数组的某一列时,返回的仍然是列的结构,一种正确的索引方式是:

>>>X[:, 1][:, np.newaxis]
array([[2],
   [6],
   [10]])

如果想实现第二列和第四列的拼接(层叠):

>>>X_sub = np.hstack([X[:, 1][:, np.newaxis], X[:, 3][:, np.newaxis]])      
          % hstack:horizontal stack,水平方向上的层叠
>>>X_sub
array([[2, 4]
   [6, 8]
   [10, 12]])

当然更为简单的方式还是使用切片:

>> X[:, [1, 3]]
array([[ 2, 4],
    [ 6, 8],
    [10, 12]])

3. 使用 np.expand_dims

>> X = np.random.randint(0, 9, (2, 3))
>> mean_X = np.mean(X, axis=0)
>> X - mean_X           # 这样做是没有问题的

>> mean_X = np.mean(X, axis=1)
>> X - mean_X
ValueError: operands could not be broadcast together with shapes (2,3) (2,)

此时便需要手动的调整 mean_X 的维度,使其能够 broadcast,有以下三种方式,在指定的轴上进行 broadcast:

mean_X[:, None]

mean_X[:, np.newaxis]

mean_X = np.expand_dims(mean_X, axis=1)

以上这篇np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python搭建Django应用程序步骤及版本冲突问题解决
Nov 19 Python
python使用webbrowser浏览指定url的方法
Apr 04 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
解析Python的缩进规则的使用
Jan 16 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
Jan 29 Python
Pycharm运行加载文本出现错误的解决方法
Jun 27 Python
解决python明明pip安装成功却找不到包的问题
Aug 28 Python
Python 获取指定文件夹下的目录和文件的实现
Aug 30 Python
如何在python中写hive脚本
Nov 08 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 Python
python 实现多维数组转向量
Nov 30 #Python
python 二维矩阵转三维矩阵示例
Nov 30 #Python
Python三元运算与lambda表达式实例解析
Nov 30 #Python
python将三维数组展开成二维数组的实现
Nov 30 #Python
Pandas实现dataframe和np.array的相互转换
Nov 30 #Python
Python实现图片批量加入水印代码实例
Nov 30 #Python
Python实现把多维数组展开成DataFrame
Nov 30 #Python
You might like
PHP 命名空间实例说明
2011/01/27 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
详解js异步文件加载器
2016/01/24 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
js 金额格式化来回转换示例
2014/02/23 Javascript
jquery对table中各数据的增加、保存、删除操作示例
2014/05/14 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
angularJS之$http:与服务器交互示例
2017/03/17 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
分析经典Python开发工程师面试题
2019/04/08 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
Python中的面向接口编程示例详解
2021/01/17 Python
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
应急管理培训方案
2014/06/12 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
回复函范文
2015/07/14 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
SQL SERVER存储过程用法详解
2022/02/24 SQL Server