np.tile 和np.newaxis
- output
- array([[ 0.24747071, -0.43886742],
- [-0.03916734, -0.70580089],
- [ 0.00462337, -0.51431584],
- ...,
- [ 0.15071507, -0.57029653],
- [ 0.06246116, -0.33766761],
- [ 0.08218585, -0.59906501]], dtype=float32)
- ipdb> np.shape(output)
- (64, 2)
- ipdb> np.max(output, axis=1)[:,np.newaxis]
- array([[ 0.24747071],
- [-0.03916734],
- [ 0.00462337],
- ...,
- [ 0.15071507],
- [ 0.06246116],
- [ 0.08218585]], dtype=float32)
- ipdb> np.tile(np.max(output, axis=1)[:,np.newaxis], [1,2]))
- *** SyntaxError: invalid syntax (<stdin>, line 1)
- ipdb> np.tile(np.max(output, axis=1)[:,np.newaxis], [1,2])
- array([[ 0.24747071, 0.24747071],
- [-0.03916734, -0.03916734],
- [ 0.00462337, 0.00462337],
- ...,
- [ 0.15071507, 0.15071507],
- [ 0.06246116, 0.06246116],
- [ 0.08218585, 0.08218585]], dtype=float32)
- ipdb> output
- array([[ 0.24747071, -0.43886742],
- [-0.03916734, -0.70580089],
- [ 0.00462337, -0.51431584],
- ...,
- [ 0.15071507, -0.57029653],
- [ 0.06246116, -0.33766761],
- [ 0.08218585, -0.59906501]], dtype=float32)
- ipdb> np.max(output, axis=1)
- array([ 0.24747071, -0.03916734, 0.00462337, ..., 0.15071507,
- 0.06246116, 0.08218585], dtype=float32)
- ipdb> np.exp(output - np.tile(np.max(output, axis=1)[:,np.newaxis], [1,2]))
- array([[ 1. , 0.50341612],
- [ 1. , 0.51343411],
- [ 1. , 0.59515154],
- ...,
- [ 1. , 0.48626012],
- [ 1. , 0.67023373],
- [ 1. , 0.50598365]], dtype=float32)
1- np.newaxis
np.newaxis的功能是插入新维度,看下面的例子:
print a.shape
print a
输出结果
(5,)
[1 2 3 4 5]
可以看出a是一个一维数组,
a=np.array([1,2,3,4,5])
b=a[np.newaxis,:]
print a.shape,b.shape
print a
print b
输出结果:
(5,) (1, 5)
[1 2 3 4 5]
[[1 2 3 4 5]]
x_data=np.linspace(-1,1,300)[:,np.newaxis]
a=np.array([1,2,3,4,5])
b=a[:,np.newaxis]
print a.shape,b.shape
print a
print b
输出结果
(5,) (5, 1)
[1 2 3 4 5]
[[1]
[2]
[3]
[4]
[5]]
2. np.tile
函数原型:numpy.tile(A,reps) #简单理解是此函数将A进行重复输出
其中A和reps都是array_like的参数,A可以是:array,list,tuple,dict,matrix以及基本数据类型int,string,float以及bool类型,reps的类型可以是tuple,list,dict,array,int,bool,但不可以是float,string,matrix类型。
计较常用的形式有两种,是将A简单进行一维重复输出,和将A进行二维重复后输出。
一维重复:
- import numpy as np
- a = [[1,2,3],[4,5,5]]
- b = np.tile(a,3)
- print(b)
- #输出为
- #[[1 2 3 1 2 3 1 2 3]
- # [4 5 5 4 5 5 4 5 5]]
二维重复:#上面的一维重复相当于 b = np.tile(a,[1,3])
- import numpy as np
- a = [[1,2,3],[4,5,5]]
- b = np.tile(a,[2,3])
- print(b)
- #输出为:
- #[[1 2 3 1 2 3 1 2 3]
- # [4 5 5 4 5 5 4 5 5]
- # [1 2 3 1 2 3 1 2 3]
- # [4 5 5 4 5 5 4 5 5]]
2.1 np.tile
numpy.tile()是个什么函数呢,说白了,就是把数组沿各个方向复制
比如 a = np.array([0,1,2]), np.tile(a,(2,1))就是把a先沿x轴(就这样称呼吧)复制1倍,即没有复制,仍然是 [0,1,2]。 再把结果沿y方向复制2倍,即最终得到
array([[0,1,2],
[0,1,2]])
同理:
>>> b = np.array([[1, 2], [3, 4]])
>>> np.tile(b, 2) #沿X轴复制2倍
array([[1, 2, 1, 2],
[3, 4, 3, 4]])
>>> np.tile(b, (2, 1))#沿X轴复制1倍(相当于没有复制),再沿Y轴复制2倍
array([[1, 2],
[3, 4],
[1, 2],
[3, 4]])
numpy.tile()具体细节,如下:
Construct an array by repeating A the number of times given by reps.
If reps has length d, the result will have dimension of max(d, A.ndim).
If A.ndim < d, A is promoted to be d-dimensional by prepending new axes. So a shape (3,) array is promoted to (1, 3) for 2-D replication, or shape (1, 1, 3) for 3-D replication. If this is not the desired behavior, promote A to d-dimensions manually before calling this function.
If A.ndim > d, reps is promoted to A.ndim by pre-pending 1’s to it. Thus for an A of shape (2, 3, 4, 5), a repsof (2, 2) is treated as (1, 1, 2, 2).
Note : Although tile may be used for broadcasting, it is strongly recommended to use numpy’s broadcasting operations and functions.
| Parameters: |
A : array_like
reps : array_like
|
|---|---|
| Returns: |
c : ndarray
|
See also
- repeat
- Repeat elements of an array.
- broadcast_to
- Broadcast an array to a new shape
Examples
>>> a = np.array([0, 1, 2])
>>> np.tile(a, 2)
array([0, 1, 2, 0, 1, 2])
>>> np.tile(a, (2, 2))
array([[0, 1, 2, 0, 1, 2],
[0, 1, 2, 0, 1, 2]])
>>> np.tile(a, (2, 1, 2))
array([[[0, 1, 2, 0, 1, 2]],
[[0, 1, 2, 0, 1, 2]]])
>>> b = np.array([[1, 2], [3, 4]])
>>> np.tile(b, 2)
array([[1, 2, 1, 2],
[3, 4, 3, 4]])
>>> np.tile(b, (2, 1))
array([[1, 2],
[3, 4],
[1, 2],
[3, 4]])
>>> c = np.array([1,2,3,4])
>>> np.tile(c,(4,1))
array([[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4]])
原文:https://blog.csdn.net/wuguangbin1230/article/details/77678785
np.tile 和np.newaxis的更多相关文章
- np.tile语法
>>> v = np.array([1, 0, 1])>>> vv = np.tile(v,(4,1))>>> print vv[[1 0 1] ...
- np.repeat 与 np.tile
1.Numpy的 tile() 函数,就是将原矩阵横向.纵向地复制.tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来. 举个例子,原矩阵: import numpy as np ...
- np.tile(), np.repeat() 和 tf.tile()
以上三个函数,主要区别在于能够拓展维度上和重复方式: np.tile() 能够拓展维度,并且整体重复: a = np.array([0,1,2]) np.tile(a,(2,2)) # out # a ...
- numpy 辨异(四)—— np.repeat 与 np.tile
>> import numpy as np >> help(np.repeat) >> help(np.tile) 二者执行的是均是复制操作: np.repeat: ...
- numpy中np.c_和np.r_
np.r_:按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat() np.c_:按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的mer ...
- p,np,npc,np难问题,确定图灵机与非确定图灵机
本文转自豆瓣_燃烧的影子 图灵机与可计算性 图灵(1912~1954)出生于英国伦敦,19岁进入剑桥皇家学院研究量子力学和数理逻辑.1935年,图灵写出了"论高斯误差函数"的论文, ...
- numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)
1. np.asarray -- numpy 风格的类型转换 从已有多维数组创建新的多维数组,数据类型可重新设置 >> B = np.asarray(A, dtype='int32') 2 ...
- dtypes.py", line 499 _np_qint8 = np.dtype([("qint8", np.int8, (1,)])
Traceback (most recent call last): File "<stdin>", line 1, in <module> File &q ...
- python多项式拟合:np.polyfit 和 np.polyld
python数据拟合主要可采用numpy库,库的安装可直接用pip install numpy等. 1. 原始数据:假如要拟合的数据yyy来自sin函数,np.sin import numpy as ...
随机推荐
- POJ_3186_Treats for the Cows
Treats for the Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6568 Accepted: 34 ...
- Java Hash Collision之数据生产
上一篇文章一种高级的DoS攻击-Hash碰撞攻击我通过伪造Hash Collision数据实现了对Java的DoS攻击,下面说说如何生产大量的攻击数据. HashTable是一种非常常用的数据结构.它 ...
- python3.5 安装python3-tk
https://blog.csdn.net/qq_18293213/article/details/74483516 在python3.5下安装好matplotlib后,准备显示一张图片测试一下,但是 ...
- 洛谷P1903 数颜色 [国家集训队] 莫队
正解:带修莫队 解题报告: 可以理解为引入时间参数,然后就是有了仨参数,关于这个修改同样的是,如果时间是相同的,不用搞,如果时间不相同做一下时光倒流/时光推移就成嘛 但是肯定既然这样的话,按照原来的s ...
- 洛谷P3953 逛公园 [noip2017] 图论+dp
正解:图论(最短路)+dp(记忆化搜索) 解题报告: 这题真的是个好东西! 做了这题我才发现我的dij一直是错的...但是我以前用dij做的题居然都A了?什么玄学事件啊...我哭了TT 不过其实感觉还 ...
- django源码笔记-【2】(转)
add by zhj: 在原文的基础上有修改 原文:http://www.cnblogs.com/gaott/archive/2012/02/28/2371238.html 上一期完理解了WSGI处理 ...
- sql优化 表连接join方式
sql优化核心 是数据库中 解析器+优化器的工作,我觉得主要有以下几个大方面:1>扫表的方法(索引非索引.主键非主键.书签查.索引下推)2>关联表的方法(三种),关键是内存如何利用 ...
- 16 jmeter中的监听器以及测试结果分析
常用监听器 断言结果.查看结果树.聚合报告.Summary Report.用表格查看结果.图形结果.aggregate graph等 指标分析 -Samples:本次场景中一共完成了多少请求-Aver ...
- 发现XMind一个超级牛逼的功能
本来想要自己手动建立下文件夹的结构图,一不小心发现了一个大惊喜. 比如想要看一下360Downloads文件夹下的文件结构,可以先创建一个名叫360Downloads的主节点,然后把其文件夹下的文件直 ...
- [py]letcode第一题求和
letcode第一题, tm的不好弄. 想了很久想到了一个粗蠢的解决办法. Given an array of integers, return indices of the two numbers ...