python创建数组元素为汉字_Numpy中⽂⽤户指南3.2创建数组
导⾔
数组创建的⼀般机制有五种:
从其它Python的结构转换(如列表和元组)
内置的NumPy数组创建对象(如 arange, ones, zeros以及其它)
从磁盘中读取标准或⾃定义格式的数据
通过使⽤字符串或者缓冲区,从原始的字节创建数组
使⽤特殊的库函数(⽐如random)
本节不会涉及复制和连接等扩展和转换现有数组的⽅法,也不会涉及创建对象数组和结构化数组。这些会在它们⾃⼰的章节中讲述。
将Python类似数组的对象转换为NumPy数组
通常,Python中排列为数组结构的数值数据可以通过array()函数来转换成数组,典型的例⼦就是列表和元组。具体使⽤⽅法请见array()函数的⽂档。⼀些对象也⽀持数组的协议,并且可以⽤这种⽅法转换成数组。辨识⼀个对象是否能转换为数组,最简单的⽅法就是在交互式环境中尝试这⼀⽅法,看看它是否有效(即Python之道)。
例如:
>>> x = np.array([2,3,1,0])
>>> x = np.array([2, 3, 1, 0])
>>> x = np.array([[1,2.0],[0,0],(1+1j,3.)]) # note mix of tuple and lists,
and types
linspace numpy>>> x = np.array([[ 1.+0.j, 2.+0.j], [ 0.+0.j, 0.+0.j], [ 1.+1.j, 3.+0.j]])
内置的NumPy数组创建
NumPy具有从⽆到有创建数组的内置功能:
zeros(shape) 将创建⼀个填充为0的指定形状的数组。
>>> np.zeros((2, 3)) array([[ 0., 0., 0.], [ 0., 0., 0.]])
ones(shape) 将创建⼀个填充为1的数组。在其他所有⽅⾯都和zeros相同。
arange()将创建有规律的增量值数组。它的⼏种⽤法请见docstring。这⾥给出⼏个例⼦:
>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.arange(2, 10, dtype=np.float)
array([ 2., 3., 4., 5., 6., 7., 8., 9.])
>>> np.arange(2, 3, 0.1)
array([ 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9])
请注意,关于最后⼀个⽤例,有⼀些使⽤技巧,请见arrange的docstring。
linspace()将以指定数量的元素创建数组,并平分开始值和结束值。例如:
>>> np.linspace(1., 4., 6)
array([ 1. , 1.6, 2.2, 2.8, 3.4, 4. ])
这些创建函数的好处是,可以保证元素个数、起始点和结束点,arange()⼀般不会指定任意的起始值、结束值和步长。
indices()将创建数组的集合(⽤⼀维数组来模拟⾼维数组),每⼀维都有表⽰它的变量。⼀个例⼦说明⽐⼝头描述好得多:
>>> np.indices((3,3))
array([[[0, 0, 0], [1, 1, 1], [2, 2, 2]], [[0, 1, 2], [0, 1, 2], [0, 1, 2]]])
计算规则⽹格上的⾼维函数时,这会⾮常有⽤。
从磁盘读取数组
这⼤概是⼤数组创建的最常见情况。当然,细节取决于磁盘上的数据格式,所以这⼀节只能给出如何
处理各种格式的⼀般建议。
标准⼆进制格式
各个领域都有数组数据的标准格式。以下列出了⽤于读取和返回NumPy数组的已知Python库(也有其它的库可以读取数组并转换为NumPy 数组,所以也请看⼀下最后⼀节)
HDF5: PyTables
FITS: PyFITS
⼀些格式不能直接读取,但是不难将其转换为类似PIL库(能够读写许多图像格式,例如jpg、png以及其它)所⽀持的格式。
普通的ASCII格式
逗号分隔值⽂件(CSV)被⼴泛使⽤(可以被类似Excel的⼀些程序导⼊导出)。有⼀些在python中读取这些⽂件的⽅法,例如Python和
pylab(Matplotlib的⼀部分)中的函数。
更通⽤的ASCII⽂件可以使⽤SciPy的IO包来读取。
⾃定义⼆进制格式
有多种⽅法可以使⽤。如果⽂件有⼀个相对简单的格式,那么你可以写⼀个简单的I/O库并使⽤numpy fromfile()和tofile()⽅法直接读写NumPy数组(注意字节顺序!)。如果有⼀个不错的C/C++库可以⽤于读取数据,则可以⽤各种技巧把它封装⼀下,虽然这可能要耗费⼀些⼯作量,也需要更多⾼级的知识来和C/C++交互。
特殊库的使⽤
有⼀些库可以⽤于⽣成特殊⽤途的数组,这样的库不可能全部列举出来。最常见的⽤法是使⽤许多数组⽣成函数来产⽣带有随机值的数组,以及使⽤⼀些⽣成特殊矩阵(如对⾓线)的功能函数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。