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中常用的各种数据库操作模块和连接实例
May 29 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
pandas修改DataFrame列名的实现方法
Feb 22 Python
详解python中的线程与线程池
May 10 Python
python将print输出的信息保留到日志文件中
Sep 27 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
python科学计算之narray对象用法
Nov 25 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
教你如何使用Python Tkinter库制作记事本
Jun 10 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防盗链的常用方法小结
2010/07/02 PHP
php的ajax框架xajax入门与试用介绍
2010/12/19 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
Python缩进和冒号详解
2016/06/01 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
市场营销个人求职信范文
2014/02/02 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
党风廉正建设责任书
2015/01/29 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android