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()
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