Py学习  »  Python

Python笔记

Python技术博文 • 6 年前 • 708 次点击  

numpy中tile()函数的使用

1.函数的定义与说明

  函数格式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类型。

2.函数操作示例

>>> tile(1,2)
array([1, 1])

 

>>> tile((1,2,3),3)
array([1, 2, 3, 1, 2, 3, 1, 2, 3])

 

>>> tile(a,2)
array([[1, 2, 3, 1, 2, 3],
       [4, 5, 5, 4, 5, 5]])

 

>>> b=[1,3,5]
>>> tile(b,[2,3]) array([[1, 3, 5, 1, 3, 5, 1, 3, 5],       [1, 3, 5, 1, 3, 5, 1, 3, 5]])

 

>>> a=[[1,2,3],[5,4]]
>>> tile(a,[2,3]) array([[[1, 2, 3], [5, 4], [1, 2, 3], [5, 4], [1, 2, 3], [5, 4]],       [[1, 2, 3], [5, 4], [1, 2, 3], [5, 4], [1, 2, 3], [5, 4]]])

Python创建数组

1  创建数组

array函数

>>> a=([1,2],[3,4])
>>> array(a) array([[1, 2],       [3, 4]])

arange函数:指定初始值、终值、步长来创建数组

>>> import numpy
>>> numpy.arange(0,1,0.1) array([ 0. ,  0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])

linspace函数:通过指定开始值、终值和元素个数来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值

>>> numpy.linspace(0,1,10)
array([ 0.        ,  0.11111111,  0.22222222,  0.33333333,  0.44444444,        0.55555556,  0.66666667,  0.77777778,  0.88888889,  1.        ])

logspace函数和linspace类似,不过它创建等比数列,下面的例子产生1(10^0)到100(10^2)、有20个元素的等比数列

>>> numpy.logspace(1,2,20)
array([  10.        ,   11.28837892,   12.74274986,   14.38449888,         16.23776739,   18.32980711,   20.69138081,   23.35721469,         26.36650899,   29.76351442,   33.59818286,   37.92690191,         42.81332399,   48.32930239,   54.55594781,   61.58482111,         69.51927962,   78.47599704,   88.58667904,  100.        ])

此外,使用frombuffer, fromstring, fromfile等函数可以从字节序列创建数组,下面以fromstring为例:

>>> s='abcdefg'
>>> numpy.fromstring(s,dtype=numpy.int8) array([ 97, 98, 99, 100, 101, 102, 103], dtype=int8)

fromfunction函数的第一个参数为计算每个数组元素的函数,第二个参数为数组的大小(shape),因为它支持多维数组,所以第二个参数必须是一个序列

本例中创建一个二维数组表示九九乘法表:

import numpy
def func2(i,j):    
   return (i+1)*(j+1) a=numpy.fromfunction(func2,(9,9))


Python 表达式  i += x 与 i = i + x 的比较

代码1

>>> a = range(3)
>>> b = a
>>> b += [3]
>>> a
[0, 1, 2, 3]
>>> b
[0, 1, 2, 3]

代码2




    
>>> a = range(3)
>>> b = a
>>> b = b + [3]
>>> a
[0, 1, 2]
>>> b
[0, 1, 2, 3]

由上面的比较可以粗鲁的知道,二者并不是完全的等价。这个涉及到对象的一些性质:可变对象和不可变对象;在 Python 中任何对象都有的三个通用属性:唯一标识、类型、值。

唯一标识:用于标识对象的在内存中唯一性,它在对象创建之后就不会再改变,函数 id()可以查看对象的唯一标识。

类型:决定了该对象支持哪些操作,不同类型的对象支持的操作就不一样,比如列表可以有length属性,而整数没有。同样地对象的类型一旦确定了就不会再变,函数 type()可以返回对象的类型信息。

值:对象的与唯一标识不一样,并不是所有的对象的值都是一成不变的,有些对象的值可以通过某些操作发生改变,值可以变化的对象称之为可变对象(mutable),值不能改变的对象称之为不可变对象(immutable)。

常见的不可变对象有:int、tuple、set、str。




推荐阅读:

Python 禅道

Python网络爬虫学习资源整理

Python的编码命名规则

Python性能优化指南(上)

Python性能优化指南(下)

看看 40 岁“老”程序员的反思

Python初学者的17个技巧

如何优雅的使用Python


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/8hrt1Ab92e
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3302
 
708 次点击