python实用技巧(四)

来源:互联网 发布:程序员工作简历 编辑:程序博客网 时间:2024/05/14 02:29

Python实用技巧(一)
python实用技巧(二)
python实用技巧(三)
python实用技巧(四)

排序后,最后k个元素,以逆序输出

>>> l = range(1, 6)>>> k = 3                # 想要输出[5, 4, 3]>>> [l[-i] for i in range(1, k+1)][5, 4, 3]

sort、sorted、np.sort

  • 首先一点np.sort()不支持逆序,也即不支持reverse=True这一关键字参数,sort/sorted,均支持降序排序
>>> x = np.array([3, 2, 4, 1])>>> np.sort(x)array([1, 2, 3, 4])>>> np.sort(x)[-1::-1]array([4, 3, 2, 1])
  • sort是list特有的成员函数,sorted(全局函数)的对象可以是任何可迭代类型(包括numpy.ndarray类型)

  • 全局函数(np.sort(x)、sorted(x, reverse=False/True))不对数据本身进行修改,而是返回一个排好序的view

  • list.sort 指定(复杂的)排序规则(key=lambda k: k[0])

>>> persons=[{'name':'zhang3','age':15}, 'name':'li4','age':12}]>>>> persons[{'name':'zhang3','age':15},{'name':'li4','age':12}]>>> persons.sort(lambda a,b:a['age']-b['age'])persons[{'age': 12, 'name': 'li4'}, {'age': 15, 'name': 'zhang3'}]

矩阵的特征分解

特征值分解之后的特征值向量与特征向量之间构成一种天然的成对关系(pair-wise)

Lambda, Q = np.linalg.eig(A)eigen_pairs = [(Lambda[i], Q[:, i]) for i in range(len(Lambda))]eigen_pairs.sort(reverse=True)

一维向量转化为二维(某一维的长度为1)

>>> x = np.array([1, 2, 3])>>> x.shape(3,)# 转化为一行,三列# x.shape == (1, 3)>>> x[np.newaxis, :]array([[1, 2, 3]])# 转化为三行,一列>>> x[:, np.newaxis]array([[1],       [2],       [3]])

字符构成的list,用字符串替代

colors = ['r', 'g', 'b']markers = ['s', 'x', 'o']for l, c, m in zip(np.unique(y_train), colors, markers):    plt.scatter(X_train_pca[y_train==l, 0], X_train_pca[y_train==l, 1], c+m, label=l)
for l, c, m in zip(np.unique(y_train), 'rgb', 'sxo'):    plt.scatter(X_train_pca[y_train==l, 0], X_train_pca[y_train==l, 1], c+m, label=l)
0 0