人工智能——numpy"/>
人工智能——numpy
人工智能—numpy学习
numpy是一个开源的python科学计算扩展库,主要用来处理任意维度数组和矩阵。相同的任务,使用numpy比直接用python的基本数据结构更加简单高效。
安装
pip install numpy
导入
import numpy as np
一、 ndarray和array
使用Numpy操作的数据基本对象就是ndarray
array()是其中的一种创建 ndarray对象的函数
ndarray和array的区别
- ndarray是一个类,np.ndarray()其实是它的构造函数,得到一个 ndarray 对象,而 array() 其实是为了便于创建一个 ndarray对象的函数。两者得到的结果其实是一样的。
- np.ndarray()构造函数相对更麻烦也更低级一些,使用默认构造函数创建的ndarray对象的数组元素是随机值,而 numpy提供了一系列的创建 ndarray对象的函数,array()就是其中的一种;使用来构造 ndarray对象会更方便一些。
In [1]: nu_1 = np.array([[1,2,3],[4,5,6]])print(type(nu_1))print(nu_1.dtype, '\n')nu_2 = np.ndarray(shape=(2,3), dtype=np.int32)print(type(nu_2))print(nu_2.dtype)
Out[1]: <class 'numpy.ndarray'>int32 <class 'numpy.ndarray'>int32
注意:Numpy 数组必须是同质数组,即数组中每个元素的数据类型都相同
二、 函数用法
numpy.empty() 创建一个指定形状、数据类型且未初始化的数组
numpy.zeros() 创建指定大小的数组,数组元素以 0 来填充
numpy.ones() 创建指定形状的数组,数组元素以 1 来填充
numpy.ones_like() 返回一个用1填充的跟输入形状和类型一致的数组
numpy.arange() 创建按规则生成的数组
numpy.asarray() 生成一个和参数大小相同的数组numpy.expand_dims() 拓展维度
numpy.squeeze() 删除维度
三、代码举例
In [1]: import numpy as np
In [2]: x = np.empty([2,2], dtype = int)print (x)
Out[2]: [[ 454200021 981447334][1046534076 1965585521]]In [3]: a = np.zeros(4)print(a)b = np.zeros((2,3), dtype = np.float32)print(b)c = np.zeros((2,2), dtype = [('x', 'i4'), ('y', 'f4')])print(c)
Out[3]: [0. 0. 0. 0.][[0. 0. 0.][0. 0. 0.]][[(0, 0.) (0, 0.)][(0, 0.) (0, 0.)]]In [4]: a = np.ones(5)print(a)b = np.ones((4,2), dtype=np.int32)print(b)
Out[4]: [1. 1. 1. 1. 1.][[1 1][1 1][1 1][1 1]]In [5]: temp = np.zeros((2, 2))c = np.ones_like(temp)print(temp, '\n' * 2, c)
Out[5]: [[0. 0.][0. 0.]] [[1. 1.][1. 1.]]In [6]: a = np.arange(5)print(a, type(a))b = np.arange(1, 5)c = np.arange(1, 5, 2)d = np.arange(1, 5.2, 0.6)print('\n', b, '\n\n', c, '\n\n', d)
Out[6]: [0 1 2 3 4] <class 'numpy.ndarray'>[1 2 3 4] [1 3] [1. 1.6 2.2 2.8 3.4 4. 4.6 5.2]# 注意:此处由于浮点益处,系统中保存的值为5.20000001,所以结果能取到5.2In [7]: a = [1, 2, 3, 4]new_arr = np.asarray(a)print(new_arr)new_arr = np.asarray(a, dtype=np.float32)print(new_arr)
Out[7]: [1 2 3 4][1. 2. 3. 4.]In [8]: arr = np.arange(1, 13).reshape(3,4)print(arr)print(np.sum(arr))print(arr.sum())print(np.cumsum(arr)) # 计算所有元素的累计和print(np.cumprod(arr)) # 计算所有元素的累计积
Out[8]: [[ 1 2 3 4][ 5 6 7 8][ 9 10 11 12]]7878[ 1 3 6 10 15 21 28 36 45 55 66 78][ 1 2 6 24 120 720 504040320 362880 3628800 39916800 479001600]In [9]: arr = np.arange(4).reshape(2,2)arr
Out[9]: array([[0, 1],[2, 3]])In [10]: new = np.expand_dims(arr, axis=0) #在0轴拓展一个维度new
Out[10]: array([[[0, 1],[2, 3]]])In [11]: arr.shape
Out[11]: (2, 2)In [12]: new.shape
Out[12]: (1, 2, 2)In [13]: arr = array([[[0 1][2 3]]])new_arr = np.squeeze(arr, axis=0) #删除0轴的维度
In [14]: print(new_arr)
Out[14]: [[0 1][2 3]] In [15]: print(new_arr.shape)
Out[15]: (2, 2)
更多推荐
人工智能——numpy
发布评论