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