Page cover

numpy小记


numpy小记

70个NumPy分级练习题:用Python一举搞定机器学习矩阵运算

import numpy as np
# 1. 替换满足条件的元素而不影响原始数组
arr = np.arange(10)
out = np.where(arr%2==1, -1, arr)
arr
Out[4]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
out
Out[5]: array([ 0, -1,  2, -1,  4, -1,  6, -1,  8, -1])

# 7. 获取两个数组元素匹配的索引号
a = np.array([1,2,3,2,3,4,3,4,5,6])
b = np.array([7,2,10,2,7,4,9,4,9,8])
np.where(a==b)
Out[33]: (array([1, 3, 5, 7], dtype=int64),)

 # 9. 将处理标量的python函数在numpy数组上运行
maxx = lambda x,y: x if x>=y else y
pair_max = np.vectorize(maxx, otypes=[float])
a = np.array([5,7,9,8,6,4,5])
 b = np.array([6,3,4,8,9,7,1])
pair_max(a,b)
Out[45]: array([6., 7., 9., 8., 9., 7., 5.])

 # 18. 导入含有数字和文本的数据集,并保持的文本完整性
 url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
 irirs_ld = np.genfromtxt(url, delimiter=',', dtype=None)

# 21. 计算softmax值
def softmax(x):
 ex = np.exp(x-np.max(x))
 return ex/ex.sum(axis=0)
     
# 29. 概率抽样
# 暂定

 # 33. 两个数组之间的欧氏距离
 arr = np.arange(5)
 brr = np.arange(4,9)
dist = np.linalg.norm(arr-brr)
dist
Out[176]: 8.94427190999916

# 38. 不连续的日期数组。通过填补缺失的日期,使其成为连续的日期序列
 # 39. 一维数组arr,使用步长生成一个二维数组,窗口长度为4,步长为2
def gen_strides(arr, stride_len=5, windows_len=5):
    n_strides = ((arr.size-windows_len)//stride_len)+1
    return np.array([arr[s:(s+windows_len)] for s in np.arange(0, n_strides*stride_len,stride_len)])
 gen_strides(np.arange(15), stride_len=2, windows_len=4)
Out[207]: 
array([[ 0,  1,  2,  3],
    [ 2,  3,  4,  5],
     [ 4,  5,  6,  7],
    [ 6,  7,  8,  9],
    [ 8,  9, 10, 11],
    [10, 11, 12, 13]])

移动平均值

cumsum :计算轴向元素累加和,返回由中间结果组成的数组

cumprod :计算轴向元素累乘积,返回由中间结果组成的数组

第n个重复项的索引

按列排序二维数组

pearsonr相关系数

唯一值的数量

多个条件过滤numpy数组

堆叠数组操作

提取范围内的所有数字

交换数组行列

反转2维数组行列

数组打印

标准化一个数组至0到1之间

缺失值相关

数组交差集

数组产生

元素查找

最后更新于

这有帮助吗?