1.NumPy的主要特点:
- 高性能的多维数组对象:NumPy的核心是
ndarray
,它是一个高性能的多维数组对象。 - 广播功能:NumPy提供了广播(broadcasting)功能,允许不同形状的数组进行数学运算。
- 集成C/C++代码:NumPy可以无缝集成C/C++代码,提高性能。
- 广泛的数学函数库:提供了大量的数学函数,包括线性代数、傅里叶变换、随机数生成等。
- 节省内存:NumPy的数组比Python原生的列表更加节省内存。
2.安装NumPy:
你可以通过pip命令安装NumPy:
pip install numpy
3.NumPy的基本使用:
- 创建数组:
请注意:NumPy创建的数组与默认创建的数组类型不同
默认创建数组类类位:list
NumPy创建的数组类型为:numpy.ndarray
ata1 = np.arange(15).reshape(5,3)
print(data1)
#创建10个元素的数组,默认填充0
print(np.zeros(10)) # 一维数组
print(np.zeros((2,5))) # 二维数组
print(np.zeros((2,3,4))) # 三维数组
#创建10个元素的数组,默认填充1
print(np.ones(10))# 一维数组
print(np.ones((2,5)))# 二维数组
print(np.ones((2,3,4)))# 三维数组
print(np.empty((1,2,3)))#创建三维数组开辟空间占位先不给值
2.类型转换
改例子将int类型转换为float64
# 引入numpy依赖
import numpy as np
data = np.array([1,2,3,4,5,6])
#输出数据类型
print(data.dtype)
#类型转换
data = np.array([1,2,3,4,5,6],dtype=np.float64)
print(data.dtype)
4.NumPy的切片操作
import numpy as np
#索引和切片用于获取数组中部分(区间)的数据
data = np.array([1,2,3,4,5,6])
print(data)
#获取数组4的值,通过下标值指向要获取的数据,下标值由0开始至无限大
print(data[3])
#负数从右侧数。通常情况用于获取最后一个数据
print(data[-1])
#二维数组
data = np.arange(14).reshape(2,7)
print(data)
print(data[0,4])
print(data[-1,-1])
#三维数组
data = np.arange(30).reshape(2,3,5)
print(data)
print(data[1,0,0])
print(data[0][-1][-1],data[1][-1][-1])
#切片
#一维数组
data = np.array([1,2,3,4,5,6])
#a~b ,a<=x<b
print(data[0:3])
print(data[2:])
print(data[:4])
print(data[:-2])
#二维数组
data = np.arange(14).reshape(2,7)
print(data)
#参数1:行参数
#参数2:列参数
print(data[1:,:3])
print(data[:,3:4])
print(data[1:,3:4])
#三维数组
data = np.arange(30).reshape(2,3,5)
print(data)
print(data[0:1,0:2])
5.NumPy数学运算
import numpy as np
a = np.random.random(10000)*10
b = np.random.random(10000)*10
print(a)
print(b)
print(a+b)
print(np.add(a,b))
print(a-b)
print(np.subtract(a,b))
print(a/b)
print(np.divide(a,b))
# ang = np.array([0,30,45,60,90,120,135,150,180])
# rad = np.sin(ang*np.pi/180)
# print(rad)
#统计运算
data = np.array([1,2,3,4,5])
#均值
print(data.mean())
print(np.average(data))
#配置权重
print(np.average(data,weights=np.array([2,2,1,1,1])))
print(np.average(data,weights=np.array([1,1,1,2,3])))
#中位数
print(np.median(data))
#方差
print(np.var(data))
#标准差
print(np.std(data))
#聚合运算
#累加
print(np.sum(data))
#累乘
print(np.prod(data))
#最大值
print(np.max(data))
#最小值
print(np.min(data))
data = np.array([1,2,3,4,5])
#筛选·排序
#输出选中数据的下标值
print(np.where(data>3))
print(np.where(data<3))
#排序
print(np.sort([5,3,7,9,1,4,2,3,6,8]))
*更多运算方法:
-
创建随机数组:
a
和b
是通过np.random.random(10000)*10
创建的包含10000个元素的随机数组,每个元素的值在0到10之间。
-
数组加法:
a+b
直接使用加号运算符对两个数组进行逐元素相加。np.add(a, b)
使用NumPy的add
函数进行逐元素相加,结果与直接使用加号相同。
-
数组减法:
a-b
使用减号运算符对两个数组进行逐元素相减。np.subtract(a, b)
使用NumPy的subtract
函数进行逐元素相减。
-
数组除法:
a/b
使用除号运算符对两个数组进行逐元素相除。np.divide(a, b)
使用NumPy的divide
函数进行逐元素相除。
-
数组的三角函数:
- 注释掉的代码
ang = np.array([0,30,45,60,90,120,135,150,180])
创建了一个包含角度的数组。 rad = np.sin(ang*np.pi/180)
将角度转换为弧度并计算每个角度的正弦值。
- 注释掉的代码
-
统计运算:
data.mean()
计算数组data
的均值。np.average(data)
计算数组data
的平均值,与mean()
功能相同。np.average(data, weights=np.array([2,2,1,1,1]))
计算加权平均值,权重数组为[2,2,1,1,1]
。np.average(data, weights=np.array([1,1,1,2,3]))
计算另一个加权平均值,权重数组为[1,1,1,2,3]
。np.median(data)
计算数组data
的中位数。np.var(data)
计算数组data
的方差。np.std(data)
计算数组data
的标准差。
-
聚合运算:
np.sum(data)
计算数组data
的总和。np.prod(data)
计算数组data
的元素乘积。np.max(data)
找出数组data
的最大值。np.min(data)
找出数组data
的最小值。
-
筛选和排序:
np.where(data>3)
返回数组data
中大于3的元素的索引。np.where(data<3)
返回数组data
中小于3的元素的索引。np.sort([5,3,7,9,1,4,2,3,6,8])
对列表[5,3,7,9,1,4,2,3,6,8]
进行排序。