NumPy是Python中常用的科学计算库,提供了高效的数组操作和数值运算工具。它的核心是一个多维数组对象 ndarray,它支持基于数组的操作,如数学、逻辑、数组的形状操作等。同时,NumPy中还提供了许多用于数据处理和操作的工具,例如线性代数、随机数生成、傅里叶变换等等。
NumPy的一个重要优势是其运算速度和效率。NumPy中所有的数值操作都是在多维数组上进行的,这些操作都是基于C语言的,因此具有非常高的性能。此外,NumPy还与许多其他科学计算工具和可视化库进行了整合,如SciPy、Matplotlib、Pandas等等,这使得NumPy成为Python科学计算生态的一个重要组成部分。总之,NumPy是一个重要的Python库,提供了高效的数组操作和数值计算工具,为数据科学和计算科学提供了强大的支持。
pip install numpy
出现
Requirement already satisfied: numpy in d:\pycharmproject\venv\lib\site-packages (1.24.2)
表示安装成功
随便写个代码检测一下:
import numpy as np
a=np.arange(10)
print(a)
输出0-9表示成功了
array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, like=None) Create an array.
//控制台操作
PyDev console: starting.
Python 3.11.3 (tags/v3.11.3:f3909b8, Apr 4 2023, 23:49:59) [MSC v.1934 64 bit (AMD64)] on win32
import numpy as np
np.array([10,20,30,40,50])
array([10, 20, 30, 40, 50])
np.array([[10,20,30],[10,10,10],[20,12,12]])
array([[10, 20, 30],
[10, 10, 10],
[20, 12, 12]])
np.array([[[10,10,10],[20,20,20],[30,30,30]]])
array([[[10, 10, 10],
[20, 20, 20],
[30, 30, 30]]])
dtype可以制定元素类型
np.array([10,20,30,40],dtype=float)
array([10., 20., 30., 40.])
使用zeros或ones函数创建指定大小的全零或全一数组
np.arange(20)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
np.arange(1,21)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20])
np.arange(1,100,20)
array([ 1, 21, 41, 61, 81])
加上dtype
np.arange(1,21,dtype=np.float_)
array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,
14., 15., 16., 17., 18., 19., 20.])
创建二维数组
np.array([np.arange(1,4),np.arange(4,7)])
array([[1, 2, 3],
[4, 5, 6]])
#确定随机数种子
np.random.seed(0)
np.random.random()
0.5488135039273248
a=np.random.random(size=5)
print(a)
[0.71518937 0.60276338 0.54488318 0.4236548 0.64589411]
print(a.shape)
(5,)
aa=np.random.random(size=(4,5))
print(aa)
[[0.43758721 0.891773 0.96366276 0.38344152 0.79172504]
[0.52889492 0.56804456 0.92559664 0.07103606 0.0871293 ]
[0.0202184 0.83261985 0.77815675 0.87001215 0.97861834]
[0.79915856 0.46147936 0.78052918 0.11827443 0.63992102]]
aaa=np.random.random(size=(2,3,4))
print(aaa)
[[[0.14335329 0.94466892 0.52184832 0.41466194]
[0.26455561 0.77423369 0.45615033 0.56843395]
[0.0187898 0.6176355 0.61209572 0.616934 ]]
[[0.94374808 0.6818203 0.3595079 0.43703195]
[0.6976312 0.06022547 0.66676672 0.67063787]
[0.21038256 0.1289263 0.31542835 0.36371077]]]
#随机整数
np.random.randint(5)
1
np.random.randint(1,11,size=20)
array([ 5, 5, 7, 5, 5, 4, 5, 5, 9, 5, 4, 8, 6, 6, 1, 2, 6,
10, 4, 1])
#正态分布
np.random.randn(2,3,4)
array([[[ 1.50944508, 1.06777513, -0.68658948, 0.01487332],
[-0.3756659 , -0.03822364, 0.36797447, -0.0447237 ],
[-0.30237513, -2.2244036 , 0.72400636, 0.35900276]],
[[ 1.07612104, 0.19214083, 0.85292596, 0.01835718],
[ 0.42830357, 0.99627783, -0.49114966, 0.71267817],
[ 1.11334035, -2.15367459, -0.41611148, -1.07089699]]])
np.random.normal(loc=3,scale=1,size=4)
array([3.22113881, 1.87694288, 1.94924204, 4.01207905])
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。
ndarray 内部由以下内容组成:
- 一个指向数据(内存或内存映射文件中的一块数据)的指针。
- 数据类型或 dtype,描述在数组中的固定大小值的格子。
- 一个表示数组形状(shape)的元组,表示各维度大小的元组。
- 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。
a=np.array([1,2,3])
print(a)
[1 2 3]
#多一个维度
a=np.array([1,2,3],dtype=complex)
print(a)
[1.+0.j 2.+0.j 3.+0.j]
在NumPy中,dtype是numpy中一个重要的对象,用来描述ndarray数组的数据类型。每个ndarray数组都有一个dtype对象,该对象定义了数组中元素的数据类型,如float、int、bool、complex等等。 NumPy中常见的数据类型包括:
- int:整数类型,可以使用int8、int16、int32、int64等不同的位数表示不同的范围。
- float:浮点类型,可以使用float16、float32、float64等不同的位数表示不同的精度。
- bool:布尔类型,只能储存True或False。
- complex:复数类型,可以使用complex64、complex128等不同的位数表示不同的精度。
- string_:字符串类型,可以使用string_类型定义一个固定长度的字符串。 使用dtype来指定ndarray数组的数据类型,可以通过在array函数中添加dtype参数来实现。
dtype 对象是使用以下语法构造的:
numpy.dtype(object, align, copy)
student=np.dtype([('name','S20'),('age','i1'),('marks','f4')])
a=np.array([('abc',21,50),('xyz',18,75)],dtype=student)
print(a)
[(b'abc', 21, 50.) (b'xyz', 18, 75.)]
dt=np.dtype(np.int32)
print(dt)
int32
#int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
dt=np.dtype('i4')
print(dt)
int32
#创建结构化数据类型
dt=np.dtype([('age',np.int8)])
print(dt)
[('age', 'i1')]
#将数据类型应用余ndarray对象
a=np.array([(10,),(20,),(30,)],dtype=dt)
print(a)
[(10,) (20,) (30,)]
ndarray 数组除了可以使用底层 ndarray 构造器来创建外,也可以通过以下几种方式来创建。
numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:
numpy.empty(shape, dtype = float, order = 'C')
x=np.empty([3,3],dtype=int)
print(x)
[[1527424112 706 1527509808]
[ 706 1969621466 1869898606]
[1920167023 81 1936024425]]
创建指定大小的数组,数组元素以 0 来填充:
numpy.zeros(shape, dtype = float, order = 'C')
x=np.zeros(5)
print
<built-in function print>
print(x)
[0. 0. 0. 0. 0.]
#整型
y=np.zeros((5,),dtype=int)
print(y)
[0 0 0 0 0]
numpy.zeros_like 用于创建一个与给定数组具有相同形状的数组,数组元素以 0 来填充。
numpy.zeros 和 numpy.zeros_like 都是用于创建一个指定形状的数组,其中所有元素都是 0。
它们之间的区别在于:numpy.zeros 可以直接指定要创建的数组的形状,而 numpy.zeros_like 则是创建一个与给定数组具有相同形状的数组。
numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)
#创建一个和arr形状相同的所有元素均为0的数组
zeros_arr=np.zeros_like(arr)
print(zeros_arr)
[[0 0 0]
[0 0 0]
[0 0 0]]