1. 初识Numpy

NumPy是一个开源的Python科学计算库,它提供了一个强大的N维数组对象`ndarray`和大量的数学函数库,用于处理大规模数据集。它的核心功能包括多维数组的高效操作、数组广播、丰富的数学和线性代数运算、灵活的索引和切片、以及便捷的输入/输出接口,使其在数据分析、机器学习、图像处理和信号处理等多个科学计算领域得到广泛应用。

2. 创建Numpy数组

2.1 创建一维数组

import numpy as np
d1 = np.array([1,2,3,4,5,6])
print(d1)
功能 代码
类型numpy.ndarry print(type(d1))
输出元素个数 print(d1.size)
输出数组维度 print(d1.ndim)

 2.2 创建二维数组 

2.2.1拆分一维数组

先创建一个由0开始的15个数 ,再将其拆分成一个,三行五列的二维数组。

注意:元素的个数和拆分的二维参数要匹配否则报错。   

d2 = np.arange(15)
d2 = d2.reshape(3,5)

或者:

d2 = np.arange(15).reshape(5,3)

 2.2.2 创建Numpy类型数组

import numpy as np
#内置方式创建二维数组,数据类型是list
data = [[1,2,3],[4,5,6]]
#创建numpy数组,更改后数据类型是numpy.ndarray
data = np.array(data)
print(data)

2.3 创建全0/1数组

创建10个元素的数组,默认填充0 

import numpy as np
print(np.ones(10))    #一维全1数组
print(np.zeros(10))    #一维全0数组
print(np.zeros((2,5)))    #二维全0数组,且两行三列
print(np.zeros((2,3,4)))    #三维的2x3x4全0数组
print(np.empty((1,2,3)))    #三维空数组,输出的是id地址

 3.转换数据类型

print(data.dtype)  #查看数据类型

import numpy as np
data = np.array([1,2,3,4,5,6])    #数据类型:int32
data = np.array([1,2,3,4,5,6],dtype=np.float64)  #类型转换
data = data.astype(np.int64)    #数据类型:int64

4. 索引与切片

索引和切片用于获取数组中部分(区间)的数据:

data = np.array([1,2,3,4,5,6])

4.1索引

4.1.1 一维数据索取

 获取数字4的值,通过下标指向要获取的数据,下标值又0至无限大

print(data[3])  #4

 负数从右侧向左侧读,用于获取最后一个数

print(data[-2])     #5

 4.1.2 二维数据索取

将一维数组改为2行7列的二维数组:

[[ 0  1  2  3  4  5  6]
[ 7  8  9 10 11 12 13]]

data = np.arange(14).reshape(2,7)
print(data)
print(data[0,4])    #4
print(data[-1,-1])    #13
print(data[-1,-1],data[0,-1])    #13 6

4.1.3 三维数据索取 

data = np.arange(30).reshape(2,3,5)
print(data)
print(data[1,0,0])    #15
print(data[0,2,-1],data[1,2,-1])    #14 29
print(data[0][-1][-1],data[1][-1][-1])    #14 29

4.2切片

4.2.1 一维数据切片

data = np.array([1,2,3,4,5,6])
print(data[0:3])    #左闭右开 [1 2 3]
print(data[2:])    #[3 4 5 6]
print(data[:4])    #[1 2 3 4]
print(data[:-2])    #[1 2 3 4]

4.2.2 二维数据切片

参数1:行参数  ;  参数2:列参数

data = np.arange(14).reshape(2,7)
print(data[1:,:3])    #[[7 8 9]]
print(data[:,3:4])    #[[ 3]  [10]]
print(data[1:,3:4])    #[[10]]

4.2.3 三维数据切片

data = np.arange(30).reshape(2,3,5)
print(data[0:1,:,0:2])
#[[[ 0  1]
# [ 5  6]
# [10 11]]]

5.数组运算

创建所用数据:

import numpy as np
a = np.random.random(10000)*10
b = np.random.random(10000)*10
print(a)
print(b)

5.1 算数运算(加减乘除)

print(np.add(a,b))#a+b
print(np.subtract(a,b))#a-b
print(np.multiply(a,b))#a*b
print(np.divide(a,b))#a/b

5.2 数学运算(三角函数)

ang = np.array([0,30,45,60,90,120,135,150,180])
rad = np.sin(ang*np.pi/180)
rad = np.cos(ang*np.pi/180)
print(rad)

5.3 统计运算

data = np.array([1,2,3,4,5])

5.3.1 均值

print(data.mean())
print(np.average(data))

5.3.2 配置权重

print(np.average(data,weights=np.array([2,2,1,1,1])))
print(np.average(data,weights=np.array([1,1,1,2,3])))

5.3.3 中位数

print(np.median(data))

5.3.4 方差

print(np.var(data))

5.3.5 标准差

print(np.std(data))

5.3.6 聚合运算(累加、累乘、最值)

print(np.sum(data))#累加
print(np.prod(data))#累乘
print(np.max(data))#最大值
print(np.min(data))#最小值

5.4 筛选排序

5.4.1 筛选

输出选中数据的下标

print(np.where(data>3))
print(np.where(data<3))

5.4.2 排序

print(np.sort([1,9,5,2,4,0,3,7,2,6,3]))
print(np.sort([1,9,5,2,4,0,3,7,2,6,3])[::-1]) #倒序

5.5 矩阵 

1.转置:

将行向量d转为列向量:

print(d)
print(d.T)

2.点积(np.dot)

1.一维数组点积
import numpy as np  
  
# 定义两个一维数组  
a = np.array([1, 2, 3])  
c = np.array([4, 5, 6])  
  
# 计算点积  
result = np.dot(a, c)  
  
# 打印结果  
print(result)  # 输出应该是 32,因为 1*4 + 2*5 + 3*6 = 32
2.二维数组点积
import numpy as np  
  
# 定义两个二维数组(矩阵)  
a = np.array([[1, 2], [3, 4]])  
c = np.array([[5, 6], [7, 8]])  
  
# 计算矩阵乘积  
result = np.dot(a, c)  
  
# 打印结果  
print(result)  
# 输出应该是:  
# [[19 22]  
#  [43 50]]  
# 因为 1*5 + 2*7 = 19, 1*6 + 2*8 = 22, ...

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐