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静态方法实例
Jan 14 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
python实现实时监控文件的方法
Aug 26 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
基于树莓派的语音对话机器人
Jun 17 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
python数字类型math库原理解析
Mar 02 Python
通过实例解析python and和or使用方法
Nov 14 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
python opencv旋转图片的使用方法
Jun 04 Python
python 标准库原理与用法详解之os.path篇
Oct 24 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
Laravel5中Cookie的使用详解
2017/05/03 PHP
PHP时间处理类操作示例
2018/09/05 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
使用Python的内建模块collections的教程
2015/04/28 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
python基于Selenium的web自动化框架
2019/07/14 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
护理自荐信范文
2013/10/05 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
关于做家务的心得体会
2016/01/23 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
数据库连接池
2021/04/06 MySQL
tensorflow中的数据类型dtype用法说明
2021/05/26 Python
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers