Python-Numpy 的基础知识
·
1.ndarray 的数据类型

2.索引与切片

# 一维数组的索引与切片
arr = np.array([0,1,2,3,4,5,6,7,8,9])
print(arr)
print(arr[0]) # 第一个元素 ---0
print(arr[:]) # 所有元素 ---[0 1 2 3 4 5 6 7 8 9]
print(arr[1:5]) # 左闭右开 ---[1 2 3 4]
print(arr[1:5:2]) # 步长为2 ---[1 3]
print(arr[(arr>5) & (arr<8)]) # # 条件索引,输出大于5且小于8的元素 ---[6 7]
print(arr[slice(1,5,2)]) # 使用slice对象进行切片,等价于arr[1:5:2] ---[1 3]
# 二维数组的索引与切片
arr = np.random.randint(1,100,(3,4))
print(arr)
print(arr[1,2]) # 第2行第3列的元素 ---24
print(arr[1]) # 第2行的所有元素 ---[91 86 24 67]
print(arr[:,2]) # 第3列的所有元素 ---[ 2 24 52]
print(arr[arr>50]) # 条件索引,输出大于50的元素
# ---[98 95 91 86 67 52 70]
print(arr[slice(1,3), slice(0,2)]) # 使用slice对象进行切片,等价于arr[1:3,0:2]
#----[[91 86]
# [23 47]]
3.ndarray的运算
a = np.array([1,2,3])
b = np.array([4,5,6])
print(a + b) # 数组的加法: 对应索引位置的元素相加
print(a * b) # 数组的乘法: 对应索引位置的元素相乘
print(a - b) # 数组的减法: 对应索引位置的元素
print(a / b) # 数组的除法: 对应索引位置的元素相除
print(a ** 2) # 数组的幂运算: 每个元素的平方
c = np.array([[1,2],[3,4]])
d = np.array([[5,6],[7,8]])
print(c + 5) # 数组与标量的加法: 每个元素加5
print(c * 2) # 数组与标量的乘法: 每个元素
print(c * d) # 数组的元素乘法: 对应索引位置的元素相乘
print(c @ d) # 数组的矩阵乘法: c的行与d的列进行点积运算
print(c.dot(d.T)) # 数组的 点乘: 等价于c @ d.T(d的转置)
# 广播机制
# 当两个数组的形状不同时,通过广播机制将它们的形状统一,再进行运算
a = np.array([1,2,3])
b = np.array([[1],[2],[3]])
print(a + b) # 广播: a的每个元素与b的每个元素相加
4.Numpy常用函数
# 常用函数
arr = np.array([1,2,3,4,5])
print(np.sqrt(arr)) # 数组的平方根: 每个元素的平方根-sqrt
print(np.exp(arr)) # 数组的指数函数: 每个元素的指数- exp
print(np.sin(np.pi/2)) # 数组的正弦函数: 每个元素的正弦值 - sin
print(np.cos(np.pi/3)) # 数组的余弦函数: 每个元素的余弦值 - cos
print(np.abs(arr)) # 数组的绝对值函数: 每个元素的绝对值 - abs
print(np.power(arr,2)) # 数组的幂函数: 每个元素的平方 - power
print(np.round(arr)) # 数组的四舍五入函数: 每个元素四四舍五入 - round
print(np.isnan(arr)) # 数组的判断函数: 判断每个元素是否为NaN - isNaN
# 数组的统计函数
print(np.sum(arr)) # 数组的求和函数: 所有元素的和 - sum
print(np.mean(arr)) # 数组的平均值函数: 所有元素的平均值 - mean
print(np.median(arr)) # 数组的中位数函数: 所有元素的中位数 - median
print(np.std(arr)) # 数组的标准差函数: 所有元素的标准差 - std
print(np.var(arr)) # 数组的方差函数: 所有元素的方差 - var
print(np.min(arr)) # 数组的最小值函数: 所有元素的最小值 - min
print(np.max(arr)) # 数组的最大值函数: 所有元素的最大值 - max
print(np.percentile(arr, 50)) # 数组的百分位数函数: 所有元素的第50百分位数 - percentile
# 比较函数 : 判断数组元素是否满足某个条件
arr = np.array([1,2,3,4,5])
print(np.equal(arr, 3)) # 数组的相等比较函数: 判断每个元素是否等于3 - equal
print(np.greater(arr, 3)) # 数组的大于比较函数: 判断每个元素是否大于3 - greater
print(np.less(arr, 3)) # 数组的小于比较函数: 判断每个元素是否小于3 - less
print(np.equal([1,4,7],[2,5,7]))
print(np.logical_and(arr>2, arr<5)) # 数组的逻辑与函数: 判断每个元素是否大于2且小于5 - logical_and
print(np.logical_or(arr>2, arr<5)) # 数组的逻辑或函数: 判断每个元素是否大于2或小于5 - logical_or
print(np.logical_not(arr>3)) # 数组的逻辑非函数: 判断每个元素是否不大于3 - logical_not
# 自定义条件
arr = np.array([1,2,3,4,5])
score = np.random.randint(0,100,20)
print(np.where(arr<3,arr,0)) # 数组的where函数: 根据条件返回元素 - where
# 形如三目运算符 条件 ? 表达式1 : 表达式2 ======可以嵌套使用
# 数组的select函数: 根据条件返回元素 - select
print(np.select([score>80,(score>60) & (score<=80),score<60],['A','B','C']))
# 排序
arr = np.array([5,3,2,4,1])
print(arr)
print(np.sort(arr)) # 数组的sort函数: 对数组元素排序 - sort
print(arr.argsort()) # 数组的argsort函数: 返回数组元素排序后的索引 - argsort
# 去重函数
# 数组的unique函数: 返回数组中唯一的元素 - unique
arr = np.array([1,2,2,3,4,4,5])
print(np.unique(arr))
# 数组的拼接
# 数组的concatenate函数: 将多个数组拼接在一起 - concatenate
arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
print(np.concatenate((arr1, arr2)))
# 数组的分割
arr = np.array([1,2,3,4,5,6])
print(np.split(arr, 3)) # 数组的split函数: 将数组分割成3个子数组 - split
# 数组的reshape函数: 将数组重新塑形 - reshape
arr = np.arange(1,13)
print(np.reshape(arr,(3,4)))
# 数组的求和函数: 所有元素的和 - sum
print("每行的和为:",np.sum(np.reshape(arr,(3,4)),axis=1))
print("每列的和为:",np.sum(np.reshape(arr,(3,4)),axis=0)) 更多推荐
所有评论(0)