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脚本实现12306火车票查询系统
Sep 30 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
Python多维/嵌套字典数据无限遍历的实现
Nov 04 Python
详解python中requirements.txt的一切
Mar 03 Python
高效使用Python字典的清单
Apr 04 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 Python
用python给csv里的数据排序的具体代码
Jul 17 Python
python实现canny边缘检测
Sep 14 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的面向对象编程
2006/10/09 PHP
php+mysql数据库实现无限分类的方法
2014/12/12 PHP
php fread读取文件注意事项
2016/09/24 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
Z-Blog中用到的js代码
2007/03/15 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
vue中activated的用法
2021/01/03 Vue.js
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
在Python中操作字典之update()方法的使用
2015/05/22 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
英文简历中的自我评价用语
2013/12/09 职场文书
创业计划实施的7大步骤
2014/02/05 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
军训结束新闻稿
2015/07/17 职场文书
学校团代会开幕词
2016/03/04 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python