• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

人工智能——numpy

武飞扬头像
n南x星
帮助1

人工智能—numpy学习

numpy是一个开源的python科学计算扩展库,主要用来处理任意维度数组和矩阵。相同的任务,使用numpy比直接用python的基本数据结构更加简单高效。


安装

pip install numpy

导入

import numpy as np	

一、 ndarray和array

使用Numpy操作的数据基本对象就是ndarray
array()是其中的一种创建 ndarray对象的函数
ndarray和array的区别

  1. ndarray是一个类,np.ndarray()其实是它的构造函数,得到一个 ndarray 对象,而 array() 其实是为了便于创建一个 ndarray对象的函数。两者得到的结果其实是一样的。
  2. 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.2

In [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]]
		78
		78
		[ 1  3  6 10 15 21 28 36 45 55 66 78]
		[        1         2         6        24       120       720      5040
		     40320    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)
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfckcb
系列文章
更多 icon
同类精品
更多 icon
继续加载