1. output
  2.  
    array([[ 0.24747071, -0.43886742],
  3.  
    [-0.03916734, -0.70580089],
  4.  
    [ 0.00462337, -0.51431584],
  5.  
    ...,
  6.  
    [ 0.15071507, -0.57029653],
  7.  
    [ 0.06246116, -0.33766761],
  8.  
    [ 0.08218585, -0.59906501]], dtype=float32)
  9.  
     
  10.  
    ipdb> np.shape(output)
  11.  
    (64, 2)
  12.  
     
  13.  
    ipdb> np.max(output, axis=1)[:,np.newaxis]
  14.  
    array([[ 0.24747071],
  15.  
    [-0.03916734],
  16.  
    [ 0.00462337],
  17.  
    ...,
  18.  
    [ 0.15071507],
  19.  
    [ 0.06246116],
  20.  
    [ 0.08218585]], dtype=float32)
  21.  
     
  22.  
    ipdb> np.tile(np.max(output, axis=1)[:,np.newaxis], [1,2]))
  23.  
    *** SyntaxError: invalid syntax (<stdin>, line 1)
  24.  
     
  25.  
    ipdb> np.tile(np.max(output, axis=1)[:,np.newaxis], [1,2])
  26.  
    array([[ 0.24747071, 0.24747071],
  27.  
    [-0.03916734, -0.03916734],
  28.  
    [ 0.00462337, 0.00462337],
  29.  
    ...,
  30.  
    [ 0.15071507, 0.15071507],
  31.  
    [ 0.06246116, 0.06246116],
  32.  
    [ 0.08218585, 0.08218585]], dtype=float32)
  33.  
     
  34.  
    ipdb> output
  35.  
    array([[ 0.24747071, -0.43886742],
  36.  
    [-0.03916734, -0.70580089],
  37.  
    [ 0.00462337, -0.51431584],
  38.  
    ...,
  39.  
    [ 0.15071507, -0.57029653],
  40.  
    [ 0.06246116, -0.33766761],
  41.  
    [ 0.08218585, -0.59906501]], dtype=float32)
  42.  
     
  43.  
    ipdb> np.max(output, axis=1)
  44.  
    array([ 0.24747071, -0.03916734, 0.00462337, ..., 0.15071507,
  45.  
    0.06246116, 0.08218585], dtype=float32)
  46.  
    ipdb> np.exp(output - np.tile(np.max(output, axis=1)[:,np.newaxis], [1,2]))
  47.  
    array([[ 1.        ,  0.50341612],
  48.  
           [ 1.        ,  0.51343411],
  49.  
           [ 1.        ,  0.59515154],
  50.  
           ...,
  51.  
           [ 1.        ,  0.48626012],
  52.  
           [ 1.        ,  0.67023373],
  53.  
           [ 1.        ,  0.50598365]], dtype=float32)

1- np.newaxis

np.newaxis的功能是插入新维度,看下面的例子:

a=np.array([1,2,3,4,5])
print a.shape

print a

输出结果

(5,)
[1 2 3 4 5]

可以看出a是一个一维数组,

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,) (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]]

可以看出np.newaxis分别是在行或列上增加维度,原来是(6,)的数组,在行上增加维度变成(1,6)的二维数组,在列上增加维度变为(6,1)的二维数组

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进行二维重复后输出。
一维重复:

  1.  
    import numpy as np
  2.  
    a = [[1,2,3],[4,5,5]]
  3.  
    b = np.tile(a,3)
  4.  
    print(b)
  5.  
     
  6.  
    #输出为
  7.  
    #[[1 2 3 1 2 3 1 2 3]
  8.  
    # [4 5 5 4 5 5 4 5 5]]

二维重复:#上面的一维重复相当于 b = np.tile(a,[1,3])

  1.  
    import numpy as np
  2.  
    a = [[1,2,3],[4,5,5]]
  3.  
    b = np.tile(a,[2,3])
  4.  
    print(b)
  5.  
     
  6.  
    #输出为:
  7.  
    #[[1 2 3 1 2 3 1 2 3]
  8.  
    # [4 5 5 4 5 5 4 5 5]
  9.  
    # [1 2 3 1 2 3 1 2 3]
  10.  
    # [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()具体细节,如下:

numpy.tile(A, reps)

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

The input array.

reps : array_like

The number of repetitions of A along each axis.

Returns:

c : ndarray

The tiled output array.

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的更多相关文章

  1. np.tile语法

    >>> v = np.array([1, 0, 1])>>> vv = np.tile(v,(4,1))>>> print vv[[1 0 1] ...

  2. np.repeat 与 np.tile

    1.Numpy的 tile() 函数,就是将原矩阵横向.纵向地复制.tile 是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来. 举个例子,原矩阵: import numpy as np ...

  3. np.tile(), np.repeat() 和 tf.tile()

    以上三个函数,主要区别在于能够拓展维度上和重复方式: np.tile() 能够拓展维度,并且整体重复: a = np.array([0,1,2]) np.tile(a,(2,2)) # out # a ...

  4. numpy 辨异(四)—— np.repeat 与 np.tile

    >> import numpy as np >> help(np.repeat) >> help(np.tile) 二者执行的是均是复制操作: np.repeat: ...

  5. numpy中np.c_和np.r_

    np.r_:按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat() np.c_:按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的mer ...

  6. p,np,npc,np难问题,确定图灵机与非确定图灵机

    本文转自豆瓣_燃烧的影子 图灵机与可计算性 图灵(1912~1954)出生于英国伦敦,19岁进入剑桥皇家学院研究量子力学和数理逻辑.1935年,图灵写出了"论高斯误差函数"的论文, ...

  7. numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)

    1. np.asarray -- numpy 风格的类型转换 从已有多维数组创建新的多维数组,数据类型可重新设置 >> B = np.asarray(A, dtype='int32') 2 ...

  8. 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 ...

  9. python多项式拟合:np.polyfit 和 np.polyld

    python数据拟合主要可采用numpy库,库的安装可直接用pip install numpy等. 1. 原始数据:假如要拟合的数据yyy来自sin函数,np.sin import numpy as ...

随机推荐

  1. 通过 Kubernetes 和容器实现 DevOps

    https://mp.weixin.qq.com/s/1WmwisSGrVyXixgCYzMA1w 直到 Docker 的出现(2008 年),容器才真正具备了较好的可操作性和实用性.容器技术的概念最 ...

  2. How to disable a plugin when Jenkins is down?

    ===(different .jpi and bak and restore it )=== A plugin is preventing Jenkins to restart Environment ...

  3. java正则表达式使用

    用正则表达式进行字符串校验,截取十分方便,项目开发中灵活的使用正则表达式能让你的代码简洁优雅并且不易出错.在实际的应用中,掌握以下几点知识就可以应付绝大多数的开发场景了. 1. 字符串开始结束匹配:^ ...

  4. Guideline 2.1 - Information Needed

    For information about testing your app and preparing it for review, please see Technical Note TN2431 ...

  5. Python开发【数据结构】:字典内部剖析

    字典内部剖析 开篇先提出几个疑问: 所有的类型都可以做字典的键值吗? 字典的存储结构是如何实现的? 散列冲突时如何解决? 最近看了一些关于字典的文章,决定通过自己的理解把他们写下来:本章将详细阐述上面 ...

  6. Netty In Action中文版 - 第三章:Netty核心概念

            在这一章我们将讨论Netty的10个核心类.清楚了解他们的结构对使用Netty非常实用.可能有一些不会再工作中用到.可是也有一些非经常常使用也非常核心,你会遇到. Bootstrap ...

  7. PHP消息队列实现及应用_慕课网学习

    https://blog.csdn.net/d_g_h/article/details/79643714 https://blog.csdn.net/tTU1EvLDeLFq5btqiK/articl ...

  8. (转)Elasticsearch查询规则------match和term

    es种有两种查询模式,一种是像传递URL参数一样去传递查询语句,被称为简单搜索或查询字符串(query string)搜索,比如 GET /megacorp/employee/_search //查询 ...

  9. 深入理解python之二——python列表和元组

    从一开始学习python的时候,很多人就听到的是元组和列表差不多,区别就是元组不可以改变,列表可以改变. 从数据结构来说,这两者都应当属于数组,元组属于静态的数组,而列表属于动态数组.稍后再内存的分配 ...

  10. How to install MVVM Light Toolkit via NuGet

    Here is how you can install MVVM Light Toolkit  via NuGet in an easy way using only Visual Studio. S ...