Python-Numpy的tile函数

来源:互联网 发布:工程算量软件 编辑:程序博客网 时间:2024/05/24 04:32

tile函数是模板numpy.lib.shape_base中的函数。
函数的形式是tile(A,reps)
A和reps都是array_like
A的类型众多,几乎所有类型都可以:array, list, tuple, dict, matrix以及基本数据类型int, string, float以及bool类型。
reps的类型也很多,可以是tuple,list, dict, array, int,bool.但不可以是float, string, matrix类型。

简单理解就是:

reps的数字从后往前分别对应A的第N个维度的重复次数。如tile(A,2)表示A的第一个维度重复2遍,tile(A,(2,3))表示A的第一个维度重复3遍,然后第二个维度重复2遍,tile(A,(2,2,3))表示A的第一个维度重复3遍,第二个维度重复2遍,第三个维度重复2遍。

例子:

>>> from numpy import *>>> a=[1,3]>>> tile(a,2)array([1, 3, 1, 3])>>> tile(a,(2,3))array([[1, 3, 1, 3, 1, 3],       [1, 3, 1, 3, 1, 3]])>>> tile(a,(2,3,3))array([[[1, 3, 1, 3, 1, 3],        [1, 3, 1, 3, 1, 3],        [1, 3, 1, 3, 1, 3]],       [[1, 3, 1, 3, 1, 3],        [1, 3, 1, 3, 1, 3],        [1, 3, 1, 3, 1, 3]]])>>>        

其他的形式:

  • 当reps为bool类型或者是bool list类型的时候,与int类型相对应,即True对应为1,False对应为0
>>> tile(a,(True))array([1, 3])>>> tile(a,(True,False))array([], shape=(1L, 0L), dtype=int32)>>> tile(a,(True,True))array([[1, 3]])>>> tile(a,(True,True,True))array([[[1, 3]]])>>> 
  • 当reps为dict类型时,实则取的是key值列表,且key值列表为升序排列
>>> tile([1,2,3],{1:2,3:4})array([[1, 2, 3, 1, 2, 3, 1, 2, 3]])>>> tile([1,2,3],{3:4,1:2})array([[1, 2, 3, 1, 2, 3, 1, 2, 3]])>>> a={1:2,3:4}>>> tile([1,2,3],a.keys())array([[1, 2, 3, 1, 2, 3, 1, 2, 3]])>>> 
  • 当A为int,string,float,bool,dict等类型的时候,操作大体相似,都是讲A视为一个整体,生成一个与reps的长度相同维度的数组
>>> tile({1:2,3:4},3)array([{1: 2, 3: 4}, {1: 2, 3: 4}, {1: 2, 3: 4}], dtype=object)>>> tile({1:2,3:4},[2,2])array([[{1: 2, 3: 4}, {1: 2, 3: 4}],       [{1: 2, 3: 4}, {1: 2, 3: 4}]], dtype=object)>>> tile('abc',3)array(['abc', 'abc', 'abc'],       dtype='|S3')>>> tile('abc',[3,3])array([['abc', 'abc', 'abc'],       ['abc', 'abc', 'abc'],       ['abc', 'abc', 'abc']],       dtype='|S3')>>> tile(2,3)array([2, 2, 2])>>> tile(2,[3,3])array([[2, 2, 2],       [2, 2, 2],       [2, 2, 2]])>>> 

由以上运行结果可以简单理解tile()的用法

原创粉丝点击