- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常简单的场景,我想测试二维数组的两个元素是否(单独)是更大数组的成员 - 例如:
full_array = np.array(['A','B','C','D','E','F'])
sub_arrays = np.array([['A','C','F'],
['B','C','E']])
np.isin(full_array, sub_arrays)
array([ True, True, True, False, True, True])
array([[ True, False, True, False, False, True],
[ False, True, True, False, True, False]])
最佳答案
基于广播的一
一个简单的方法是使用 broadcasting
在扩展其中一个阵列然后沿各自的轴进行任何减少之后 -
In [140]: (full_array==sub_arrays[...,None]).any(axis=1)
Out[140]:
array([[ True, False, True, False, False, True],
[False, True, True, False, True, False]])
与
searchsorted
具体案例#1
full_array
正在排序和来自
sub_arrays
的所有元素至少出现在
full_array
的某个地方,我们也可以使用
np.searchsorted
——
idx = np.searchsorted(full_array, sub_arrays)
out = np.zeros((sub_arrays.shape[0],len(full_array)),dtype=bool)
np.put_along_axis(out, idx, 1, axis=1)
具体案例#2
full_array
正在排序,如果不是来自
sub_arrays
的所有元素保证至少出现在
full_array
的某个地方,我们需要一个额外的步骤 -
idx = np.searchsorted(full_array, sub_arrays)
idx[idx==len(full_array)] = 0
out = np.zeros((sub_arrays.shape[0],len(full_array)),dtype=bool)
np.put_along_axis(out, idx, full_array[idx] == sub_arrays, axis=1)
通用案例
full_array
的真正通用情况不一定要排序,我们需要使用
sorter
arg 与
searchsorted
——
def isin2D(full_array, sub_arrays):
out = np.zeros((sub_arrays.shape[0],len(full_array)),dtype=bool)
sidx = full_array.argsort()
idx = np.searchsorted(full_array, sub_arrays, sorter=sidx)
idx[idx==len(full_array)] = 0
idx0 = sidx[idx]
np.put_along_axis(out, idx0, full_array[idx0] == sub_arrays, axis=1)
return out
sample 运行 -
In [214]: full_array
Out[214]: array(['E', 'F', 'A', 'B', 'D', 'C'], dtype='|S1')
In [215]: sub_arrays
Out[215]:
array([['Z', 'C', 'F'],
['B', 'C', 'E']], dtype='|S1')
In [216]: isin2D(full_array, sub_arrays)
Out[216]:
array([[False, True, False, False, False, True],
[ True, False, False, True, False, True]])
关于python - 在二维和一维数组之间按元素使用 numpy isin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53631460/
我正在使用 Pandas 和 Python 导入一个 CSV,并对导入的数据框中的数据进行操作,以便创建一个新列。 新列中的每一行都是基于 A 列和 B 列的每个对应行中的值生成的。数据框中有更多包含
我的数据框是这样的: userid codeassigned timestamp 15 553938
我想从一个非常奇怪的字符串中解析出一个 ISIN,我的代码如下所示: > df dput(df) structure(list(ID = c(1L, 2L, 4L, 2L, 3L, 24L), VA
我对 isin() 函数准确性有一些问题。 我的 DataFrame 中有 abc 许多 ID: df = DataFrame[DataFrame['id'].isin(IDs)] 但是结果: pri
我有一本字典,我想使用该字典对 df 中的新列进行分类。 df 中的 Value 列应该与字典中的值进行比较。 df 中的新列应该是与值关联的键。 d = {'Car':['1','2','3'],
我正在尝试检查另一个数据框中是否存在行。我没有加入/合并,因为它会产生重复,然后需要过滤掉重复可能也会过滤掉我想要保留的实际重复。 示例: table1 = pd.DataFrame({'a':[1,
我正在尝试使用 Java 中的列表来过滤 Spark DataFrame。 java.util.List selected = ....; DataFrame result = df.filter(d
我有两个数据框。 Dataframe A 有一列由 list ids(命名项)值组成。数据框 B 有一列 int id 值(命名为 id)。 数据框 A: date | items
我正在尝试将 .isin 与 ~ 一起使用,这样我就可以根据 2 个数据集中的多列获取唯一行的列表。 所以,我有 2 个 9 行的数据集:df1 是底部,df2 是顶部(抱歉,但我无法让它在下面同时显
d = {'Dates':[pd.Timestamp('2013-01-02'), pd.Timestamp('2013-01-03'), pd
isin() 给我奇怪的结果。我创建了以下 DataFrame: import pandas as pd import numpy as np test=pd.DataFrame({'1': np.l
我有一个非常简单的场景,我想测试二维数组的两个元素是否(单独)是更大数组的成员 - 例如: full_array = np.array(['A','B','C','D','E','F']) sub_a
我可以帮助您使用 ISIN pandas 函数。基本上,我需要根据不同的标准按年汇总数据框中的数据。问题是我需要对数据进行许多聚合(例如国家名称、资助计划等)。为了方便起见,我试图在 for 循环中执
这是我的模型: type: { type: Sequelize.STRING, defaultValue: 'text', allowNull: fal
我有两个数组: a = np.array([[1, 2], [3, 4], [5, 6]]) b = np.array([[1, 1, 1, 3, 3], [1, 2, 4
这是一个例子 创建一个包含 100M 相同行的表: >>> df = pd.DataFrame([('20170101', 'TULIP', 'FLOWER')] * 100000000, colum
这个问题已经有答案了: check for identical rows in different numpy arrays (7 个回答) 已关闭 2 年前。 我有两个数组: A = np.arra
假设我有以下两个数据框: df = pd.DataFrame({'col1':['a','b', 'c'], 'col2': ['q', 'w', 'e']}) df1 = pd.DataFrame(
这个问题已经有答案了: check for identical rows in different numpy arrays (7 个回答) 已关闭 2 年前。 我有两个数组: A = np.arra
假设我有以下两个数据框: df = pd.DataFrame({'col1':['a','b', 'c'], 'col2': ['q', 'w', 'e']}) df1 = pd.DataFrame(
我是一名优秀的程序员,十分优秀!