批量更改变量名,就在该变量名上shift+f6
../data
两个点,就是上一级目录,一个点就是当前目录
unhashable type: 'list'
使用set进行去重
a = [1,2,2,3,4]
set(a)是可以的
可是如果a = [[1,2],2,2]就不行,set 进行哈希的时候,需要每个元素都是可哈希的,
可变类型的数据不可哈希,如list,字典:同值不同址,不同值同址
数值、字母、字符串、数字、元组不可变:同值同址,不同值不同址
类变量的值将在这个类的所有实例之间共享。
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self
q = [(1,2),(2,3)]
df = pd.DataFrame(q,columns=['id','question'])
# data = DataFrame(np.arange(16).reshape(4,4), index=['Ohio', 'Colorado', 'Utah', 'New York'], columns=['one', 'two', 'three', 'four'])
print(df.loc[:1])
df = pd.DataFrame([[1,2,3,4,5]], columns=['标准问题id','标准问题','相似问题','答案','相似问题ID'])
df1 = pd.DataFrame([[1,2,3,4,6]], columns=['标准问题id','标准问题','相似问题','答案','相似问题ID'])
df.append(df1)
print(df.append(df1))
df.append之后,不会像list一样直接加进去,必须使用
df = df.append()
import numpy as np
vec = np.zeros(10)
import random
random_list = np.random.randint(0,10,4)
print(random_list)
vec[random_list] = 1
print(vec)
生成一个随机位置为1,其他位置为0的矩阵
def contrast_enhance(vec1,vec2):
vec1[1]= 1
vec2[1] = 3
arr1 = [1,2,3,4]
arr2 = [2,2,2]
contrast_enhance(arr1,arr2)
print(arr1)
print(arr2)
如何得到np.array里非0元素个数?
使用
count1 = np.sum(vec1!=0)
count2 = np.sum(vec2!=0)
count = count1+count2
print(count)
dist = count**0.5
sim = 1.0 / (1.0 + dist)
return sim
如果要使用array.nonzero(),这个函数是返回下标的,不能用sum,应该用array.size
vec1_temp = np.array([1,2,3,4,5,6])
print(np.sum(vec1_temp!=0))
vec = vec1_temp.nonzero() #会返回一个tuple tuple[0]是array, tuple[1]是类型
print(vec)
print(vec[0].size)
如果用len(array),返回的是行数
交集
a = set(['我','爱','北','京'])
b = set(['爱','北','京'])
c = a&b
print(c)
判断集合为空
if {}:
print(1)
else:
print(0)
select * from pospal_kf.similarquestion where questionid in(1820,1531)
time8 = time.time()
print('time8-time7')
print(time8-time7)
result = list(set(result))
simi_q_list = sorted(result, key=lambda tup: tup[3], reverse=True)
time9 = time.time()
print('time9-time8')
print(time9-time8)
python 中,sorted函数的速度非常非常快,具体原因要问一下。
a = np.random.randint(1,100,10000000)
time1 = time.time()
count = np.sum(a!=0)
time2 = time.time()
print(time2-time1)
len(a.nonzero()[0])
time3 = time.time()
print(time3-time2)
0.014009952545166016
0.04614996910095215
事实证明,使用np.sum的方法比较快
pandas 去除空行
df = pd.read_excel('答案书写.xlsx', sheet_name = 'Sheet1')
print(df.dropna(subset=['答案']))
阈值thres =
维度 axis,
subset 是一个list,如果按行去除,这个list的元素就是非空的column