- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图确定不同 numpy orderdict 对象中保存的两个值是否相同。
这两个字典都是通过使用 turbodbc
中的 fetchallnumpy()
选项创建的,并且包含两个键。第一个键是 id 字段,第二个键是可变长度的字符串值。我想查看第一组字典项目中的字符串值是否存在于第二组字典项目中。
可能值得注意的是,两个字典对象的每个键下都保存了大约 6000 万个值。
到目前为止我已经尝试了几件事:-
np.isin(dict1[str_col],dict2[str_col])
作为一个函数,但这非常慢,可能是因为字符串值存储为 dtype
对象。
我尝试将两个字典对象转换为 numpy
数组,并将显式字符串类型设置为 np.asarray(dict1[str_col], dtype='S500')
,然后尝试使用 isin
和 in1d
函数。此时系统将耗尽 RAM。已将“S500”替换为 dtype=np.string_
,但仍然出现 MemoryError
。 (ar=np.concatenate((ar1,ar2)))
同时执行 isin
函数。
我还尝试了 for 循环。
[r in dict2[str_col] for r in dict1[str_col]]
这又非常慢。
My aim is to have a relatively quick way of testing the two string columns without running out of memory.
额外位 从长远来看,当我试图识别新值和已更改的值时,我将运行不止一项检查。
字典 A = 当前数据 ['ID': [int,int,int]] 字典 B = 历史数据 ['record':[str,str,str]]
所以我感兴趣的是:-
到目前为止,我发现的最后两个元素最快的方法是将 id 列传递给包含 np.isin(arr1,arr2) 的函数。比较数据平均需要 15 秒。
最佳答案
仍然不完全清楚您想要实现的目标(请参阅我的评论)。但这是我的短片。
Pandas可以提供一种更有效的替代方法来比较字符串列表。我自己还没有针对大块数据进行过测试。
尝试以下操作:
import pandas as pd
s1 = pd.Series(dict1[str_col])
s2 = pd.Series(dict2[str_col])
print(s1.isin(s2).all())
或者,如果您无论如何都需要迭代所有列,您可以将完整的字典转换为数据框:
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
for col in df1:
print(df1[col].isin(df2[col]).all())
如果你想测试整个DataFrame的相等性,你可以使用pandas' assert_frame_equal
。例如:
pd.util.testing.assert_frame_equal(df1, df2)
# ...or if the ordering is not the same.
pd.util.testing.assert_frame_equal(df1, df2, check_like=True)
显然,可以将turbodbc数据直接转储到pandas对象中(to_pandas()
)。参见这里:turbodbc documentation, advanced usage
关于python - 查看 numpy OrderedDict 中的值是否与另一个 OrderedDict 中的值相同的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833558/
我现在很迷茫。我正在使用 PyYAML 编辑一些 YAML 文件。 data = yaml.load_all(open('testingyaml.yaml'),Loader=yaml.RoundTri
嗨,我想解析一些 order_dicts。我有以下错误 ipdb> for elem in my_orderdict['codeBook'].keys(): print("{0}
我正在尝试通过 'depth' 键对 OrderedDict 中的 OrderedDict 进行排序。有什么解决方案可以对该 Dictionary 进行排序吗? OrderedDict([ (2,
我试图确定不同 numpy orderdict 对象中保存的两个值是否相同。 这两个字典都是通过使用 turbodbc 中的 fetchallnumpy() 选项创建的,并且包含两个键。第一个键是 i
我有两个有序的字典 D1 和 D2。我想将 D2 的键名分配给 D1(覆盖 D1 的现有键名)。如何做到这一点? 例子: D1 = {'first_key': 10, 'second_key': 20
我有一个看起来像是一个 OrderdDict 的东西,其中包含我所指的“主”OrderedDict 的子集中的 OrderedDict。我正在尝试将此对象解析为 Pandas DataFrame。 (
我正在尝试向 mysql 中插入一个有序的字典,但我认为我遗漏了一个简单的项目。 sql_command = """CREATE TABLE asdf ( id INTEGER PRIMARY KEY
我有一个OrderedDict,我需要在保持排序的同时添加一个元素 import sys import bisect from collections import OrderedDict arr =
我有一个 python OrderedDict,当我只更新一个键值时,所有其他键值对也会更新。我已经包含了下面的源代码和跟踪。 我期望有一个 key 对 (2014, {'start': 2014,
import collections d = collections.defaultdict(dict) d["i"]["a"] = "111" d["i"]["b"] = "222" print d
在脚本中,我有一个 OrderedDict groups,它按字母顺序获取键/值对。 在脚本的另一部分,我正在检查与 key 相同的文件,如下所示: for (key, value) in group
想法是这样的:我有一个像这样的 orderedDict(简化版): {'012013': 3, '022013': 1, '032013': 5} 我想做的是通过以某种方式迭代它来累积所有值。例如,我
这个循环的想法是遍历一个列表。如果对象的某个属性不是 OrderedDict 的键,它将添加它。它是对象列表的字典 for object in someList: if object.DATE n
我正在尝试找出如何打印一个列表 storeItems,其中包含 3 个 OrderedDict(),并且能够打印 key 和每个 OrderedDict 的 value。我不知道如何解决这个问题,这就
我以为我为自己设定了一个简单的项目,但我想不是。我认为我长期使用 Ordered dict 函数是因为我不断得到: ValueError: too many values to unpack (ex
OrderedDict([(u'attributes', OrderedDict([(u'type', u'Campaign__c'), (u'url', u'/services/data/v29.0
我有这个代码: self.statusIcons = collections.OrderedDict for index in guiConfig.STATUS_ICON_SETS: sel
我有以下相当复杂的数据结构: temp_dict = { 'a': { 'aardvark': (6,True), 'apple': (3,True)
OrderedDict 能否获得关键位置? 类似于 index() 的 list test = ['a', 'b', 'c', 'd', 'e'] test.index('b') # return 1
我在回答关于 SO 的其中一个问题时偶然发现了 OrderedDict 的这种行为,我无法解释。它进行如下你有一个看起来像这样的字典: exmpl = OrderedDict([(30, ('A1'
我是一名优秀的程序员,十分优秀!