NumPy入门教程
第一章 NumPy 介绍
第二章 ndarray的创建及其属性
第三章 ndarray的基本操作
第四章 ndarray的索引、切片和遍历
第五章 ndarray的重塑、组合和拆分
第六章 用于ndarray的文件操作
第七章 ndarray的赋值、视图、拷贝和广播
目录
前言
上一章我们介绍了 NumPy 的多维数组以及多维数组相对于列表的优势。本章介绍ndarray的创建及其属性。
一、ndarray 的创建及获取属性
上节课我们有提到过 ndarray 的创建,我只需要将列表传入到 np.array()
函数中。例如:
>>> import numpy as np
>>>
>>> my_list = [1, 2, 3, 4, 5, 6]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr
array([1, 2, 3, 4, 5, 6])
ndarray 创建完成后,我们可以查看 ndarray 的属性。
1.查看类型
1.1查看 ndarray 的类型
一维数组:
>>> import numpy as np
>>>
>>> my_list = [1, 2, 3, 4, 5, 6]
>>> my_arr = np.array(my_list)
>>>
>>> type(my_arr)
<class 'numpy.ndarray'>
二维数组:
>>> import numpy as np
>>>
>>> my_list = [[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]]
>>> my_arr = np.array(my_list)
>>>
>>> type(my_arr)
<class 'numpy.ndarray'>
由于类型为 ndarray,所以代码中得到的类型为 <class 'numpy.ndarray'>
1.2查看 ndarray 中元素的类型
一维数组:
>>> import numpy as np
>>>
>>> my_list = [1, 2, 3, 4, 5, 6]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr.dtype
dtype('int64')
由于 ndarray 中的元素为整型,所以代码中得到的元素类型为int64
。
二维数组:
>>> import numpy as np
>>>
>>> my_list = [[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr.dtype
dtype('float64')
由于 ndarray 中的元素为浮点型,所以代码中得到的元素类型为float64
。
2.查看维度信息
2.1查看维度数
一维数组:
>>> import numpy as np
>>>
>>> my_list = [1, 2, 3, 4, 5, 6]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr.ndim
1
由于我们创建的是一维数组,所以代码中得到的维度数为 1。
二维数组:
>>> import numpy as np
>>>
>>> my_list = [[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr.ndim
2
由于我们创建的是二维数组,所以代码中得到的维度数为 2。
2.2查看数组大小
一维数组:
>>> import numpy as np
>>>
>>> my_list = [1, 2, 3, 4, 5, 6]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr.size
6
由于数组中包含 6 个元素,所以代码中得到的数组大小为 6。
二维数组:
>>> import numpy as np
>>>
>>> my_list = [[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr.size
6
由于数组中包含 6 个元素,所以代码中得到的数组大小为 6。
2.3查看各维度大小
一维数组:
>>> import numpy as np
>>>
>>> my_list = [1, 2, 3, 4, 5, 6]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr.shape
(6,)
由于我们创建的是一维数组,所以代码中得到的结果为 (6,)
。
二维数组:
>>> import numpy as np
>>>
>>> my_list = [[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr.shape
(2, 3)
由于我们创建的是二维数组,所以代码中得到的结果为 (2,3)
。
3.查看元素信息
3.1查看元素占用的存储空间
一维数组:
>>> import numpy as np
>>>
>>> my_list = [1, 2, 3, 4, 5, 6]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr.itemsize
8
由于元素的类型为 int64
,所以占用的存储空间为 8 个字节。
二维数组:
>>> import numpy as np
>>>
>>> my_list = [[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]]
>>> my_arr = np.array(my_list)
>>>
>>> my_arr.itemsize
8
由于元素的类型为 float64
,所以占用的存储空间为 8 个字节。
二、使用函数创建 ndarray
前面创建 ndarray 的方法是将列表传入到函数 array()
中。除此之外,我们还可以使用函数来创建 ndarray。
1.arange 函数
>>> import numpy as np
>>>
>>> my_arr = np.arange(0, 12)
>>> my_arr
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
上面的代码创建了一个包含 12 个元素的 ndarray,元素从 0 开始,到 11 结束,[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
。在使用 arange()
函数,当我们不指定步长时,默认的步长为 1。当然,我们亦可以明确指定步长。例如:
>>> import numpy as np
>>>
>>> my_arr = np.arange(0, 12, 3)
>>> my_arr
array([0, 3, 6, 9])
当我们指定步长为 3 时,生成的 ndarray 为 [0, 3, 6, 9]
。arange() 函数的参数不但可以为整数,还可以为小数。例如:
>>> import numpy as np
>>>
>>> my_arr = np.arange(0, 6, 0.6)
>>> my_arr
array([0. , 0.6, 1.2, 1.8, 2.4, 3. , 3.6, 4.2, 4.8, 5.4])
上面的代码生成了数组 [0. , 0.6, 1.2, 1.8, 2.4, 3. , 3.6, 4.2, 4.8, 5.4]
。上面使用 arange() 函数生成的是一维数组,我们可以在生成一维数组后对其进行重塑,这样便可以得到多维数组。例如:
>>> import numpy as np
>>>
>>> my_arr = np.arange(0, 12).reshape(3, 4)
>>> my_arr
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
在上面的代码中,调用 reshape()
函数对生成的一维数组进行重塑,便得到一个 3 行 4 列的二维数组。
2.linspace 函数
>>> import numpy as np
>>>
>>> my_arr = np.linspace(0, 10, 5)
>>> my_arr
array([ 0. , 2.5, 5. , 7.5, 10. ])
上述代码对区间 [0, 10] 进行 5 等分,取每个分界点的数字组成数组,便得到一维数组 [ 0. , 2.5, 5. , 7.5, 10. ]
。
3.zeros 函数
>>> import numpy as np
>>>
>>> my_arr = np.zeros(6)
>>> my_arr
array([0., 0., 0., 0., 0., 0.])
上述代码生成一个 6 个 0 的一维数组 [0., 0., 0., 0., 0., 0.]
。
>>> import numpy as np
>>>
>>> my_arr = np.zeros((2, 3))
>>> my_arr
array([[0., 0., 0.],
[0., 0., 0.]])
上述代码生成一个 2 行 3 列的二维数组,[[0., 0., 0.], [0., 0., 0.]]
,数组的元素全为 0。在调用 zeros() 函数生成多维数组时,要注意传入的是一个元组,元组的各个元素指明了多维数组各个维度的大小。
4.ones 函数
ones()
函数和 zeros()
函数类似,只不过生成的数组中的元素全为 1。
>>> import numpy as np
>>>
>>> my_arr = np.ones(6)
>>> my_arr
array([1., 1., 1., 1., 1., 1.])
上述代码生成一个 6 个 1 的一维数组 [1., 1., 1., 1., 1., 1.]
。
>>> import numpy as np
>>>
>>> my_arr = np.ones((2, 3))
>>> my_arr
array([[1., 1., 1.],
[1., 1., 1.]])
上述代码生成一个 2 行 3 列的二维数组,[[1., 1., 1.], [1., 1., 1.]]
,数组的元素全为 1。
5.random() 函数
我们可以使用 random()
函数来生成元素大小为随机的 ndarray。
>>> import numpy as np
>>>
>>> my_arr = np.random.random(3)
>>> my_arr
array([0.54326572, 0.9434831 , 0.3211316 ])
上面代码生成一个元素大小随机的一维数组 [0.54326572, 0.9434831 , 0.3211316 ]
。使用 random()
函数同样可以生成二维数组。
>>> import numpy as np
>>>
>>> my_arr = np.random.random((2, 3))
>>> my_arr
array([[0.54522555, 0.64476058, 0.65039026],
[0.67711815, 0.82748855, 0.44021124]])
总结
本章我们介绍了 ndarray 的创建以及 ndarray 属性的查看。
上一章 NumPy 介绍
下一章 ndarray的基本操作