机器学习实战《Machine Learing in Action》——第二章python知识点

sort和sorted和argsort

参考文章

  • sorted()是不会改变原序列的排列
    而sort()会改变原序列的排列

argsort

import numpy as np
x=np.array([1,4,3,-1,6,9])
y=x.argsort() #升序排列
print(y)

结果:

[3 0 2 1 4 5]

将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y

sorted

参考文章

import operator
a = [1, 2, 3]

# itemgetter函数的作用是获取对象哪些维的数据
b = operator.itemgetter(0)
c = operator.itemgetter(1,2)
print(type(b))
print(c(a))


# operator.itemgetter()函数可以结合sorted函数一起使用
a = [[1, 2, 3], [4, 3, 1], [7, 2, 2]]
print("按照每个元素的第1个元素排序:", end='')
print(sorted(a, key=operator.itemgetter(0)))  # 按照每个元素的第1个元素排序
 
print("按照每个元素的第2个元素排序:", end='')
print(sorted(a, key=operator.itemgetter(1)))  # 按照每个元素的第2个元素排序
 
print("按照每个元素的第3个元素排序:", end='')
print(sorted(a, key=operator.itemgetter(2)))  # 按照每个元素的第3个元素排序

结果:

<class 'operator.itemgetter'>
(2, 3)
按照每个元素的第1个元素排序:[[1, 2, 3], [4, 3, 1], [7, 2, 2]]
按照每个元素的第2个元素排序:[[1, 2, 3], [7, 2, 2], [4, 3, 1]]
按照每个元素的第3个元素排序:[[4, 3, 1], [7, 2, 2], [1, 2, 3]]

zeros

import numpy as np
a=np.zeros(3)
print(a)
b=np.zeros([2,1],int) #多维数组
print(b)

结果:

[0. 0. 0.]
[[0]
 [0]]

当然啊,我不推荐这样,感觉有点刷流氓

from numpy import *
a=zeros(2)
print(a)

根据已知数组构建同规格zeros

import numpy as np
a=np.array([[1,2],[1,2],[1,2]])
b=np.zeros(a.shape)
print(b)

#results
[[0. 0.]
 [0. 0.]
 [0. 0.]]

sum

import numpy as np
a=np.array([[1,3],[1,2]])
print(a)
b=a.sum(axis=0) #按列相加
print(b)
c=a.sum(axis=1) #按行相加
print(c)

或者

import numpy as np
a=np.array([[1,3],[1,2]])
print(a)

# 按行相加,并且保持其二维特性
print(np.sum(a, axis=1, keepdims=True))

# 按行相加,不保持其二维特性
print(np.sum(a, axis=1))

结果:

[[1 3]
 [1 2]]
[[4]
 [3]]
[4 3]

dict.get(key)

参考文章
参考文章

a={
    
    'a':1,'b':2}
print(a.get('a')) #返回指定键的值

print(a.get('c')) #如果键不在字典中返回默认值 None 或者设置的默认值
print(a.get('c',"sss"))

结果:

1
None
sss

和dict[key]的区别

dict.get(key)和dict[key]在key值存在的情况下,都能得到对应的键值。但是当使用dict[key]时,key必须要存在,否则会报错。但是dict.get[key]中的key可以不存在,因为get方法有一个默认的参数None,当key不存在的时候,返回None。
因此,我认为使用get比较安全

append和extend

append

append 附加,增补
将列表、元组、字符串原封不动地加在后面

a = [1,2,3]
b = 'tianjin'
a.append(b)
print(a)     

#输出
[1, 2, 3, 'tianjin']

extend

extend 扩展,延伸
将列表、元组、字符串拆开后加在后面

a = [1,2,3]
b = 'tianjin'
a.extend(b)
print(a)     

#输出
[1, 2, 3, 't', 'i', 'a', 'n', 'j', 'i', 'n']

画图

参考文章

import matplotlib.pyplot as plt    #创建自定义图像

fig=plt.figure(figsize=(4,3),facecolor='blue')

ax=fig.add_subplot(111) # 添加子图
ax.scatter(x1,y1,s=10,c='r',marker='s')
ax.scatter(x2,y2,s=10,c='b')

plt.show()

subplot

scatter参数设置

shape

import numpy as np
a=np.array([[1,2],[1,2],[1,2]])
b=np.zeros(a.shape[0])
print(a.shape[0],a.shape[1]) #行数,列数
print(b)

#results
3 2
[0. 0. 0.]

文件读取预处理

fr = open('testSet.txt')
for line in fr.readlines(): # 逐行读取
    lineArr = line.strip().split() # 去除空格和换行符,并分割,得到序列

三种读txt文件的方法

read()
readline()
readlines()

def read1():
    fr=open("a.txt")
    lines=fr.read()
    print(lines)
    print(type(lines))
    fr.close()
    
def read2():
    fr=open("a.txt")
    print(type(fr))
    lines=fr.readlines()
    print(lines)
    print(type(lines))
    fr.close()
    
def read3():
    fr=open("a.txt")
    indexs=0
    
    line=fr.readline()
    lines=[]
    while line:
        indexs+=1
        lines.append(line)
        line=fr.readline()
        

strip()

参考文章
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

a=' asd d s '
print(a)
b=a.strip()
print(b) 

# results
 asd d s 
asd d s

split()

可以看出split()函数

  • 分割符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等
  • 分割次数,默认为 -1, 即分隔所有
  • 返回值,<class ‘list’>
a="sss ss s\ns"
print(a.split())
print(a.split(' ',4)) # 分割次数不足时不会进行强行分割
print(a.split()[0]) # 由于是返回字符串列表所以可以索引

# results
['sss', 'ss', 's', 's']
['sss', 'ss', 's\ns']
sss

猜你喜欢

转载自blog.csdn.net/weixin_48622537/article/details/112796916