创建ndarray

Numpy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器,是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的。

创建数组最简单的方法就是array函数,它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的Numpy数组。

以一个列表为例:

1 In [2]: import numpy as np
2 
3 In [3]: simple = [1,2.3,4,5]
4 
5 In [4]: arr = np.array(simple)
6 
7 In [5]: arr  
8 Out[5]: array([ 1. ,  2.3,  4. ,  5. ])

嵌套序列(比如由一组等长列表组成的列表)将会被转换为一个多维数组:

 1 In [6]: simple1 = [[1,2,3,4],[5,6,7,8]]
 2 
 3 In [7]: arr1 = np.array(simple1)
 4 
 5 In [8]: arr1
 6 Out[8]: 
 7 array([[1, 2, 3, 4],
 8        [5, 6, 7, 8]])
 9 
10 In [9]: arr1.ndim  获得数组的维数
11 Out[9]: 2
12 
13 In [10]: arr1.shape
14 Out[10]: (2, 4)

除非显示说明,np.array会尝试为新建的数组推断出一个较为合适的数据类型,数据类型保存在一个特殊的dtype对象中。

1 In [12]: arr.dtype
2 Out[12]: dtype('float64')
3 
4 In [13]: arr1.dtype
5 Out[13]: dtype('int64')

除了np.array之外,还有一些函数也可以新建数组。比如zeros和ones分别可以创建指定长度或形状的全0或全1数组。empty可以创建一个没有任何具体值的数组。要用这些方法创建多维数组,只需传入一个表示形状的元祖即可。

 1 In [14]: np.zeros(10)
 2 Out[14]: array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])
 3 
 4 In [15]: np.ones(10)
 5 Out[15]: array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])
 6 
 7 In [16]: np.empty((2,3))
 8 Out[16]: 
 9 array([[  0.00000000e+000,   8.20622089e-317,   4.65914971e-317],
10        [  6.90846568e-310,   6.90847131e-310,   1.25836781e-316]])

arange是Python内置函数range的数组版

1 In [17]: np.arange(10)
2 Out[17]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

数组创建函数

函数 说明
array 将输入数据(列表、元祖、数组或其他序列类型)转换为ndarray
asarray  将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制
arange 类似于内置的range,但返回的是一个ndarray而不是列表
ones、ones_like 根据指定的形状和dtype创建一个全1数组。ones_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组
zeros、zeros_like 类似于ones和ones_like,只不过产生的是全0数组而已
empty、empty_like 创建新数组,只分配内存空间但不填充任何值
eye、identity     创建一个正方的NxN单位矩阵(对角线为1,其余为0)

 

posted @ 2017-11-20 19:08  薛乔毓  阅读(676)  评论(0编辑  收藏  举报