问题标签 [isin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python - 请使用 isin 建议一个更快的替代此代码的方法
我编写了一个程序来在天文图像中寻找彗星,但是它在一个区域运行缓慢。我已经通过尽可能使用 numpy 和 cupy 优化了它的速度。
我可以将速度问题追溯到一项操作:
thirdsplit
并且file3new
都是带有浮点值的numpy数组。它们的大小可以变化,但通常两者的大小都可能是 600 x 600。
上面的行比较了两个数组中的每个位置,并查看另一个数组中的对应位置是否相同。如果是这样True
,则在结果 t1 形状相等的数组中的该位置返回。
例如
因此
t1[100,100]
将返回True
有没有办法重写该行
让它运行得更快?
为了记录,我搜索了替代答案。我发现了一个类似的问题,但它使用了 Pandas,但我的程序中没有使用 Pandas。
python - 如果值在另一个数据框的另一列中,则添加列
我的数据框之一是:
另一个是:
我想如果 dataframe1 的任何名称在 dataframe2 列表中,它应该在 dataframe1 中添加一个名称列“present”,其中包含相应主题的值。
更新查询
df1
df2 是相同的,期望的结果是
python - Pandas 相当于 float 或 int
我有一个数据框,其中 A 列填充了数字 1-9。我只想过滤数字 2 和 3。 isin 不适用于 float dtypes。有替代方案吗?
类似于:
python - 为什么 pandas 的 isin 方法返回 False 以匹配 None?
假设我有两个等效的数据框:
当我这样使用 isin 方法时:
我得到以下输出:
'一个' | |
---|---|
0 | 错误的 |
1 | 错误的 |
2 | 错误的 |
我希望结果对所有人都是正确的。为什么我没有得到预期的结果?
感谢社区的任何指导和澄清,谢谢!
python - 用另一个数据框过滤一个数据框
我有两个熊猫数据框。一个持有节点,另一个持有边。作为一个简单的事实:所有边都应该连接到某个节点。
上面是边缘df。这些值是包含两个字符串的列表。
下面是节点df。这些值也是列表,但是这次它们只包含一个字符串对象。
我想用节点过滤边缘。
因此,如果边列表的两个元素出现在节点中的一个元素中,则应选择该索引。
示例:edges[11] = ['INET_N_752', 'INET_N_1730']
,因此节点 df 中应该有['INET_N_752']
and ['INET_N_1730']
。
我怎样才能做到这一点?
这有效
python - Numpy在二维数组中查找公共点的索引
系统
操作系统: Windows 10 (x64),Build 1909
Python 版本: 3.8.10
Numpy 版本: 1.21.2
问题
给定两个浮点数据点的 2D (N, 3)
Numpy 数组,(x, y, z)
在一个数组中查找点与另一个数组中的点相等的索引的 Pythonic(矢量化)方法是什么?
(注意: 我的问题不同之处在于我需要它来处理实际数据集,其中两个数据集可能因浮点错误而有所不同。请阅读下面的详细信息。)
历史
类似的问题已经被问过很多次了:
- 如何找到另一个二维数组中出现的二维numpy数组的索引
- 测试二维 numpy 数组中的成员资格
- 获取 Numpy 2d 数组相交行的索引
- 在另一个二维数组中查找 numpy 二维数组行的索引
- Numpy 2d Array 相交行的索引
- 在另一个二维数组中查找 numpy 二维数组行的索引
以前的尝试
SO Post 1提供了一个工作列表理解解决方案,但我正在寻找一种能够很好地扩展到大型数据集(即数百万点)的解决方案:
代码1:
输出1:
尝试SO Post 3的解决方案(类似于SO Post 2),但使用浮点数不起作用(我怀疑np.isclose
需要使用一些东西):
代码3:
输出3:
我的尝试
我试过numpy.isin
和np.all
np.argwhere
哪个有效(并且,我认为,更具可读性和可理解性;即pythonic),但不适用于包含浮点错误的真实数据集:
输出:
如何通过合并使我的上述解决方案工作(在具有浮点错误的数据集上)np.isclose
?欢迎替代解决方案。
注意: 由于small_array
是 的子集big_array
,因此无法直接使用,np.isclose
因为形状不会广播:
产量
更新
目前,我唯一可行的解决方案是
pandas - 检查前列中是否存在列的值
我有一个如下的数据框,
我想检查一个人是否有相同的水果,如果没有找到匹配项,则保留该值,
python - Python Dataframe:DF列中的字符串包含来自不同DF的子字符串和匹配时返回的子字符串值
同事,
也许您可以帮助我完成看似简单的任务,但我还没有足够的经验来解决这个问题。
假设我们有两个数据框:
- df1 包含子字符串;
- df2 包含更长的文本块,其中一些包含来自 df1 的子字符串。
这是我需要的:
- 我需要遍历行以检查 df1['subst'] 中的子字符串是否存在于 df2['strng'] 的任何位置
- 如果它存在于 df2 中,我希望 df2 中的新列 ['match_df1'] 包含来自 df1 的子字符串值。
df2 中的最终输出看起来像这样
字符串 | 匹配_df1 |
---|---|
勒布朗詹姆斯得分 20 | 勒布朗·詹姆斯 |
死了三倍的约翰是厨师的地狱 | 三倍死亡 |
真实的不是你想的那样 | 真实不是 |
五乘五不是勒布朗的得分 | 五乘五 |
python - 用列表理解解决方案替换 numpy isin
一段时间以来,我一直试图让我的彗星程序的慢速部分运行得更快。我有一行如下
s1=np.isin(secondsplit,file2new)
secondsplit 是一个 numpy 数组。平均而言,它的大小约为 600 x 600,并且充满了浮动。file2new 是一个浮点数列表,通常大小为 300-700。
我在堆栈交换论坛上讨论了这个问题,并提供了一个使用列表理解和将 file2new 转换为集合以加快速度的解决方案。我的小规模测试代码有效,列表理解速度提高了 5 倍。当我扩大规模并将彗星程序更改为以相同方式使用列表时,问题就出现了。随着数据量的增加,这段代码的运行速度要慢 4 倍!
有人建议我应该做一个大规模的例子让人们看看我所做的。我现在在这里发布它,因为今天帮助论坛中没有很多人。
如您所见,代码的第一部分设置了示例变量。我使用 myarray 和 mylist 让人们更容易理解。myarray 是 600x 600 数组, mylist 是大小为 700 的列表,所有浮点数。
预期的输出应该是一个与 myarray 大小相同但具有 True 和 False 值的 numpy 数组。每第 4 项为 True。
运行时生成的输出如下。
我的问题,如果你选择接受它,你的挑战是使用列表理解来使 quickisin 函数比使用 numpy 的 isin 更快。最快的列表理解解决方案的奖品是吹牛。
请注意,数组中的浮点数和列表之间的匹配必须准确,因此排除了使用 isclose 的可能性。
感谢您