当前位置:   article > 正文

数据分析四大库之------Numpy_numpy库多大

numpy库多大

Numpy —— 科学计算库

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能
引入
import numpy as np       # 通常都采用np作为简写名

# 可用内置函数version()检测其版本
np.__version__
  • 1
  • 2
  • 3
  • 4
列表类型与数组类型

具体array的全面总结可参考
一位大佬的博客
某博客园

**# 列表 —— 数据类型可以不同,不过处理效率不高,速度慢**
li = list(range(10))   # li = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
li[5] = 'Hello Python'  # 将li的第六个元素该为字符型的'Hello Python', 此时li = [0, 1, 2, 3, 4, 'Hello Python', 6, 7, 8, 9]

**# 数组 —— array 数据类型一定要是相同的,处理效率要比list高。但是矩阵操作不太方便了**
构建方式:  array.array('字符(数据指明类型)', 列表生成式)

import array
arr = array.array('i', list(range(10)))     # arr : array('i', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr = array.array('f', list(range(10)))   #  arr : array('f', [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0])
arr = array.array('t', list(range(10)))
/*
	ValueError                                Traceback (most recent call last)
<ipython-input-19-837f57a40226> in <module>
----> 1 arr = array.array('t', list(range(10)))

ValueError: bad typecode (must be b, B, u, h, H, i, I, l, L, q, Q, f or d)
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
Ndarray(多维数组/矩阵)
  • ndarray 对象是用于存放同类型元素的多维数组。
  • ndarray 中的每个元素在内存中都有相同存储大小的区域。
  • ndarray 内部由以下内容组成:
  1. 一个指向数据(内存或内存映射文件中的一块数据)的指针。
  2. 数据类型或 dtype,描述在数组中的固定大小值的格子。
  3. 一个表示数组形状(shape)的元组,表示各维度大小的元组。
  4. 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数
    跨度可以是负数,这样会使数组在内存中后向移动,切片中 obj[::-1] 或 obj[:,::-1] 就是如此。

~ 普通创建 ~

只需调用 NumPy 的 array 函数即可:

PS:
[2 3 4]显然是数组
但是初始化不能: b = [2 3 4]
因为这样会:SyntaxError: invalid syntax
必须用函数初始化!

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
  • 1

在这里插入图片描述 【ndarray 对象由计算机内存的连续一维部分组成,并结合索引模式,将每个元素映射到内存块中的一个位置。内存块以行顺序(C样式)或列顺序(FORTRAN或MatLab风格,即前述的F样式)来保存元素。】

PS:
向量、矩阵均由array函数创建,区别在于
向量 v = array( [逗号分隔的元素] )
矩阵 M = array( [ [ ], [ ],…,[ ] ) ====> "([ ])“里面有多少个”[ ]"取决于矩阵的行数

注意:
本质上,还是数组!所以,元素类型必须是一致的!
不过,仍然有可兼容类型的自动转换!
  • 1
  • 2
  • 3
import numpy as np 

 构建一个一维矩阵(一维数组)
a = np.array([1,2,3])  		
print(a)        			# [1 2 3]
print(type(a))				# 对象类型: numpy.ndarray
print(a.dtype)				# 数据类型: dtype('int32')
print(a.shape)              # 数组各个维度的长度: (3,) —— shape是一个元组
print(a.ndim)               # 数组维度: 1

# 利用列表生成式来创建数组
nparr = np.array(list(range(10)))
print(nparr)               # array([0 1 2 3 4 5 6 7 8 9])
# 数组元素的类型必须是相同的!
nparr[5] = 'Hello Python' 
/* 
---------------------------------------------------------------------------
ValueError                                
Traceback (most recent call last)
<ipython-input-28-c4124591e6eb> in <module>
----> 1 nparr[5] = 'Hello Python'

ValueError: invalid literal for int() with base 10: 'Hello Python'
*/

# 类型的自动转换(创建时自动转换成最高的类型,更改时自动转换成数据数组原来的数据类型)
nparr[5] = 55.23	# 原本是整型数据,现把其中一个改成浮点型,会自动向下取整
print(nparr)		# array([ 0 1 2 3 4 55 6 7 8 9])

t = np.array([1.0, 2.3, 6.4, 8.9])		# 数组原本的数据类型是浮点型,现要把其中一个改成整型,所以会自动转换。
t[3] = 8
print(t)            # array([1. , 2.3, 6.4, 8. ])

nparr2 = np.array([1, 2, 3.0])		# 以兼容的数据创建矩阵,数据类型便是最高的那级
print(nparr2.dtype) # dtype('float64')

nparr3 = np.array([1, 2, 3], dtype=float)		# 可以指定元素类型
print(nparr3)		# array([1., 2., 3.])


# 构建一个二维矩阵
a = np.array([[1,  2],  [3,  4]])  	# "([])"里有两个“[]”
print (a)
'''  [[1, 2] 
 	[3, 4]]
'''
# 设置最小维度 —— 设置ndim
import numpy as np 
a = np.array([1,2,3,4,5], ndmin =  2)  
print (a)                   # [[1, 2, 3, 4, 5]]

# 使用zero(浮点零)/ones(浮点1)/empty(未初始化,系统随机给数据)创建数组:根据shape来创建
# numpy.empty(shape, dtype = float, order = 'C')
x = np.zeros(6)        #  [0. 0. 0. 0. 0. 0.]
x = np.zeros((2,3))    
'''  [[0. 0. 0.]
     [0. 0. 0.]]
'''
x = np.ones(3)         #  [1. 1. 1.]
x = np.empty((3,3))
    '''
    [[0.00000000e+000 0.00000000e+000 0.00000000e+000]
     [0.00000000e+000 0.00000000e+000 3.04344438e-321]
     [7.56593016e-307 1.11261027e-306 4.84184333e-322]]
   ''
y = np.empty(3)       # [1. 1. 1.]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66

在这里插入图片描述

其他创建方式

numpy.asarray
numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个。

numpy.asarray(a, dtype = None, order 
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/142466
    推荐阅读
    相关标签
      

    闽ICP备14008679号