python返回数组索引_python – 返回数组中子数组的索引

编辑以下代码允许执行基于卷积的相等检查.它将True映射为1,将False映射为-1.它还会反转b,这是正常工作所需的:

def search(a, b) :

return np.where(np.round(fftconvolve(a * 2 - 1, (b * 2 - 1)[::-1],

mode='valid') - len(b)) == 0)[0]

我已经检查过它为各种随机输入提供了与as_strided方法相同的输出.我也有时间接近,并且卷积只开始用大约256个项目的大量搜索令牌付出代价.

看起来有点矫枉过正,但是使用布尔数据你可以使用(滥用?)卷积:

In [8]: np.where(np.convolve(may_a, may_b.astype(int),

...: mode='valid') == may_b.sum())[0]

Out[8]: array([2, 7])

对于较大的数据集,使用scipy.signal.fftconvolve可能会更快:

In [13]: np.where(scipy.signal.fftconvolve(may_a, may_b,

....: mode='valid') == may_b.sum())[0]

Out[13]: array([2, 7])

你必须要小心,因为输出现在是浮点数,舍入可能会破坏相等性检查:

In [14]: scipy.signal.fftconvolve(may_a, may_b, mode='valid')

Out[14]: array([ 1., 1., 2., 1., 1., 1., 1., 2.])

因此,你可能会对以下内容更好:

In [15]: np.where(np.round(scipy.signal.fftconvolve(may_a, may_b, mode='valid') -

....: may_b.sum()) == 0)[0]

Out[15]: array([2, 7])

### 回答1: 在 Python 中,字典(dictionary)是一种无序的键值对集合,可以用花括号 {} 来表示。字典中的每个键对应一个值,键和值之间用冒号 : 分隔,每对键值之间用逗号 , 分隔。 如果要创建一个空字典,可以使用空的花括号 {};如果要创建非空字典,可以使用以下语法: ``` my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} ``` 其中,key1、key2、key3 是字典中的键,value1、value2、value3 是对应的值。 如果需要在程序中动态添加键值对,可以使用以下语法: ``` my_dict['key4'] = 'value4' ``` 这将在 my_dict 中添加一个键为 'key4',值为 'value4' 的键值对。 如果需要访问字典中的某个值,可以使用以下语法: ``` my_dict['key1'] ``` 这将返回 my_dict 中键为 'key1' 的值。 ### 回答2: 在Python中,典可以通过以下两种方式进行创建: 1. 直接使用大括号 `{}` 创建典,并在其中使用冒号 `:` 分隔键和值。例如,`sub_dict = {'name': 'John', 'age': 25, 'city': 'New York'}`。 2. 使用 `dict()` 内置函数创建典。可以通过将每个键值对作为参数传递给 `dict()` 函数来创建典。例如,`sub_dict = dict(name='John', age=25, city='New York')`。 在典中,键必须是唯一的,并且可以是不可变的数据类型,如字符串、整数、元组等。值可以是任意数据类型,包括字符串、整数、浮点数、布尔值、列表、元组、字典等。 可以使用索引操作符 `[]` 来访问典中的键值对。例如,`sub_dict['name']` 将返回典中键 `'name'` 对应的值 `'John'`。 可以使用 `len()` 函数来获取典中键值对的数量。例如,`len(sub_dict)` 将返回典中键值对的个数。 典是可变的,可以通过赋值语句来修改典中的值。例如,`sub_dict['age'] = 30` 可以将典中键 `'age'` 对应的值修改为 `30`。 如果要检查典中是否存在某个键,可以使用 `in` 关键字。例如,`'name' in sub_dict` 将返回布尔值 `True`,表示典中存在键 `'name'`。 需要注意的是,典中的键值对是无序的,即无法通过索引置来访问键值对。如果需要按照特定顺序访问典中的键值对,可以使用 `sorted()` 函数对典的键进行排序。例如,`sorted(sub_dict)` 将返回典中键的列表,并按照字母顺序进行排序。 ### 回答3: 在Python中,字典是指一个字典中的值又是一个字典的情况。可以通过两种方式创建字典。 第一种方式是先创建一个空字典,然后逐渐添加键值对。在添加字典时,可以使用键值对的形式,将字典作为值添加到父字典中。例如: ```python # 创建一个空字典 parent_dict = {} # 创建一个字典 child_dict = {'name': 'Tom', 'age': 25} # 将字典作为值添加到父字典中 parent_dict['child'] = child_dict print(parent_dict) # 输出: {'child': {'name': 'Tom', 'age': 25}} ``` 第二种方式是直接在创建父字典时,使用字典嵌套的形式创建字典。例如: ```python # 创建一个包含字典的父字典 parent_dict = {'child': {'name': 'Tom', 'age': 25}} print(parent_dict) # 输出: {'child': {'name': 'Tom', 'age': 25}} ``` 无论是哪种方式,都可以通过键来访问字典中的值。例如: ```python print(parent_dict['child']['name']) # 输出: 'Tom' ``` 使用字典可以方便地组织和管理复杂的数据结构,提高代码的可读性和灵活性。在实际应用中,可以根据需要嵌套不同层次的字典来满足数据结构的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值