创建ndarray的方法
Posted 周屹峰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建ndarray的方法相关的知识,希望对你有一定的参考价值。
1.array
array将输入数据(列表、元组、数组或其他序列类型)转换为ndarray。要么推断出dtype,要么显式指定dtype。默认直接复制输入数据。
不显式说明时,array会尝试为新建的这个数组推断出一个较为合适的数据类型。数据类型保存在一个dtype对象中。
1 data1 = [1,2,2.2,3,0,4] 2 arr1 = np.array(data1) 3 print(arr1) 4 print(arr1.dtype) 5 print(arr1.ndim) 6 print(arr1.shape) 7 8 data2 = [[1,2,3,4],[5,6,7,8]] 9 arr2 = np.array(data2) 10 print(arr2) 11 print(arr2.dtype) 12 print(arr2.ndim) 13 print(arr2.shape)
上面代码运行结果为:
1 [ 1. 2. 2.2 3. 0. 4. ] 2 float64 3 1 4 (6,) 5 [[1 2 3 4] 6 [5 6 7 8]] 7 int32 8 2 9 (2, 4)
2.asarray
nsarray将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制。
源码在Lib\site-packages\numpy\core\numeric.py第463行。
观察其源码:
1 def asarray(a, dtype=None, order=None): 2 return array(a, dtype, copy=False, order=order)
可见asarray与array唯一的区别就是array会默认复制一份对象,而asarray不会(输入本身就是一个ndarray时)。例:
1 >>> arr1 = np.array([1,2,3]) 2 >>> np.asarray(arr1) is arr1 3 True 4 >>> np.array(arr1) is arr1 5 False
3.arange
arange类似于内置的range,但返回的是一个ndarray而不是列表。(Python内置函数range的数组版)
1 >>> np.arange(10) 2 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
4.zeros、zeros_like
根据指定的形状和dtype创建一个全0数组。zeros_like以另一个数组为参数,并根据其形状和dtype创建一个全0数组。
1 >>>np.zeros((2,5)) 2 array([[ 0., 0., 0., 0., 0.], 3 [ 0., 0., 0., 0., 0.]])
1 >>> arr1 = np.arange(10) 2 >>> arr2 = np.zeros_like(arr1) 3 >>> arr2 4 array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
5.ones、ones_like
与zeros、zeros_like类似,只不过产生全1数组。
6.empty、empty_like
与zeros、zeros_like类似,不过只分配内存空间,不填充任何值(一些未初始化的垃圾值)。
7.eye、identity
identity可创建一个正方的N*N单位矩阵(对角线为1,其余为0)。
1 >>> np.identity(5) 2 array([[ 1., 0., 0., 0., 0.], 3 [ 0., 1., 0., 0., 0.], 4 [ 0., 0., 1., 0., 0.], 5 [ 0., 0., 0., 1., 0.], 6 [ 0., 0., 0., 0., 1.]])
eye在单参时与identity功能相同:
1 >>> np.eye(5) 2 array([[ 1., 0., 0., 0., 0.], 3 [ 0., 1., 0., 0., 0.], 4 [ 0., 0., 1., 0., 0.], 5 [ 0., 0., 0., 1., 0.], 6 [ 0., 0., 0., 0., 1.]])
除此之外,eye后面可加参数k,表示第几条对角线为全1,如:
1 >>> np.eye(5,k=1) 2 array([[ 0., 1., 0., 0., 0.], 3 [ 0., 0., 1., 0., 0.], 4 [ 0., 0., 0., 1., 0.], 5 [ 0., 0., 0., 0., 1.], 6 [ 0., 0., 0., 0., 0.]])
1 >>> np.eye(5,k=-2) 2 array([[ 0., 0., 0., 0., 0.], 3 [ 0., 0., 0., 0., 0.], 4 [ 1., 0., 0., 0., 0.], 5 [ 0., 1., 0., 0., 0.], 6 [ 0., 0., 1., 0., 0.]])
eye还可以指定长宽(可理解为将单位矩阵截取一部分)。如:
1 >>> np.eye(3,4) 2 array([[ 1., 0., 0., 0.], 3 [ 0., 1., 0., 0.], 4 [ 0., 0., 1., 0.]])
事实上,通过查看源码(Lib\site-packages\numpy\core\numeric.py),可以很容易地看清各种函数之间的关系。
以上是关于创建ndarray的方法的主要内容,如果未能解决你的问题,请参考以下文章
Python的Numpy库的ndarray对象常用构造方法及初始化方法
数据分析2 numpy(ndarray数组,属性,创建,索引切片,运算,函数,随机数), Pandas(Series创建,缺失值处理,特性,索引,DataFrame)