工具及其软件基础

1.numpy

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创建数组

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函数创建指定大小的全零或全一数组

arange创建数组

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])

ndarray

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]

dtype类型对象

在NumPy中,dtype是numpy中一个重要的对象,用来描述ndarray数组的数据类型。每个ndarray数组都有一个dtype对象,该对象定义了数组中元素的数据类型,如float、int、bool、complex等等。 NumPy中常见的数据类型包括:

  1. int:整数类型,可以使用int8、int16、int32、int64等不同的位数表示不同的范围。
  2. float:浮点类型,可以使用float16、float32、float64等不同的位数表示不同的精度。
  3. bool:布尔类型,只能储存True或False。
  4. complex:复数类型,可以使用complex64、complex128等不同的位数表示不同的精度。
  5. string_:字符串类型,可以使用string_类型定义一个固定长度的字符串。 使用dtype来指定ndarray数组的数据类型,可以通过在array函数中添加dtype参数来实现。

dtype 对象是使用以下语法构造的:

numpy.dtype(object, align, copy)
  • object - 要转换为的数据类型对象
  • align - 如果为 true,填充字段使其类似 C 的结构体。
  • copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
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,)]

numpy创建数组

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]]

numpy.zeros

创建指定大小的数组,数组元素以 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

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]]

你可能感兴趣的:(机器学习,numpy,python,机器学习)