python判斷兩個資料集是否存在包含關係

2021-10-24 15:19:45 字數 3814 閱讀 2923

python 資料集 包含 子集

在我們拿到一些資料集的時候經常會把其分為好幾份,乙份拿來訓練,乙份拿來測試,最後驗證等等;當遇到兩個文字記憶體有資料,我們需要判斷其是否是另外乙個文字的子集…

#!usr/bin/python

# -*- coding: utf-8 -*-

import time

defto_print_entity()

: fopen_15k=

open

("data/fb15k_entity2id.txt"

,"r"

)#讀取檔案

line_15k=fopen_15k.readlines(

)#序列化

count_15k=

len(line_15k)

i_15k=

0 temp_15k=

while i_15k < count_15k:

#把序列裡每乙個元素都用空格符分割

.split(

"\t"))

i_15k=i_15k+

1 j_15k=

0 line_temp_15k=

while j_15k < count_15k:[0

])#分割後只在序列裡每乙個元素獲取第乙個字元,後面的id不要了

j_15k=j_15k+

1 fopen_237=

open

("data/fb237_entity2id.txt"

,"r"

) line_237=fopen_237.readlines(

) count_237=

len(line_237)

i_237=

0 temp_237=

while i_237 < count_237:

.split(

"\t"))

i_237=i_237+

1 j_237=

0 line_temp_237=

while j_237 < count_237:[0

])j_237=j_237+

1 not_count_15k=

0 not_count_237=

0for i in

range(0

,len

(line_temp_15k)):

#判斷在fb15k裡的實體在fb237裡是否也存在

if line_temp_15k[i]

notin line_temp_237:

#print("fb15k有fb237沒有,「位置",i,"值",line_temp_15k[i])

not_count_237=not_count_237+

1for i in

range(0

,len

(line_temp_237)):

if line_temp_237[i]

notin line_temp_15k:

#print("fb237有fb15k沒有,「位置",i,"值",line_temp_237[i])

not_count_15k = not_count_15k +

1print

("在fb15k有,在fb237沒有的實體,共有"

,not_count_237,

"條")

print

("在fb237有,在fb15k沒有的實體,共有"

,not_count_15k,

"條")

defto_print_relation()

: fopen_15k_rel=

open

("data/fb15k_relation2id.txt"

,"r"

)#讀取檔案

line_15k_rel=fopen_15k_rel.readlines(

)#序列化

count_15k_rel=

len(line_15k_rel)

i_15k_rel=

0 temp_15k_rel=

while i_15k_rel < count_15k_rel:

#把序列裡每乙個元素都用空格符分割

.split(

"\t"))

i_15k_rel=i_15k_rel+

1 j_15k_rel=

0 line_temp_15k_rel=

while j_15k_rel < count_15k_rel:[0

])#分割後只在序列裡每乙個元素獲取第乙個字元,後面的id不要了

j_15k_rel=j_15k_rel+

1 fopen_237_rel=

open

("data/fb237_relation2id.txt"

,"r"

) line_237_rel=fopen_237_rel.readlines(

) count_237_rel=

len(line_237_rel)

i_237_rel=

0 temp_237_rel=

while i_237_rel < count_237_rel:

.split(

"\t"))

i_237_rel=i_237_rel+

1 j_237_rel=

0 line_temp_237_rel=

while j_237_rel < count_237_rel:[0

])j_237_rel=j_237_rel+

1 not_count_15k_rel=

0 not_count_237_rel=

0for i in

range(0

,len

(line_temp_15k_rel)):

#判斷在fb15k裡的實體在fb237裡是否也存在

if line_temp_15k_rel[i]

notin line_temp_237_rel:

#print("fb15k有fb237沒有,「位置",i,"值",line_temp_15k[i])

not_count_237_rel=not_count_237_rel+

1for i in

range(0

,len

(line_temp_237_rel)):

if line_temp_237_rel[i]

notin line_temp_15k_rel:

print

("fb237有fb15k沒有,「位置"

,i,"值"

,line_temp_237[i]

) not_count_15k_rel = not_count_15k_rel +

1print

("在fb15k有,在fb237沒有的關係,共有"

,not_count_237_rel,

"條")

print

("在fb237有,在fb15k沒有的關係,共有"

,not_count_15k_rel,

"條")

ticks_1 = time.time(

)to_print_entity(

)to_print_relation(

)ticks_2 = time.time(

)print

("花費了:"

,ticks_2-ticks_1,

"秒!"

)

github提供的資料集

[1]:

判斷兩個陣列是否 相等

判斷前後 兩次 獲得的位置是否相同,是不是同一位置。1.如果相同,返回return 不執行 下面的 操作 2.如果有 不同,哪怕只有乙個,break,執行下面的操作 m uileftarray 上一次的位置 uileftarray 獲得的新的位置 原程式 寫的妙 啊 if m ucfirenum u...

判斷兩個陣列是否相等

陣列屬於引用資料型別,其值儲存在堆中,因此我們無法簡單的用 對其進行判斷,但可以使用類似於深拷貝的方法將其像剝洋蔥一樣撥開,逐個判斷 下面是本人自己寫的一套演算法 function arrayequal arr1,arr2 function ifequal obj1,obj2 var pretype...

判斷兩個陣列是否相同 16

案例需求 定義乙個方法,用於比較兩個陣列的內容是否相同和不相同。int arr1 int arr2 分析a 定義2個陣列。b 定義乙個方法封裝判斷陣列內容是否相同的功能,所以這個方法就應該接受2個陣列。這個方法最好給它乙個返回值,認為相同返回true,反之返回false.c.呼叫方法傳入陣列,得到比...