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 04 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
python通过http下载文件的方法详解
Jul 26 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
python数据类型强制转换实例详解
Jun 22 Python
django教程如何自学
Jul 31 Python
python引入其他文件夹下的py文件具体方法
May 23 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
thinkPHP中volist标签用法示例
2016/12/06 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
JS 实现完美include载入实现代码
2010/08/05 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
Angular的$http与$location
2016/12/26 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
python通过socket查询whois的方法
2015/07/18 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
django序列化serializers过程解析
2019/12/14 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
超级实用的8个Python列表技巧
2020/08/24 Python
python 基于opencv去除图片阴影
2021/01/26 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
通信生自我鉴定
2014/01/18 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
深入详解JS函数的柯里化
2021/06/09 Javascript
MySQL优化及索引解析
2022/03/17 MySQL