Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在每个numpy数组元素上调用函数,并在Python中重写其值_Python_Arrays_Numpy - Fatal编程技术网

在每个numpy数组元素上调用函数,并在Python中重写其值

在每个numpy数组元素上调用函数,并在Python中重写其值,python,arrays,numpy,Python,Arrays,Numpy,我有一份清单: letters = ('1', '2', '3', '5', '8', '13', '21') 有了数字8,我可以得到它的字母索引,如下所示: 字母索引('8') 不,我有一个数组,它只包含字母形式的数字 numbers = [3, 8, 13, 21, 5] 如何对每个元素调用索引(或类似)函数 我想得到的是[2,4,5,6,3] 是否有索引这样的函数可以在单个元素上获取数组? 如果需要,可以将字母更改为数组 letters = ('1', '2', '3', '5', '

我有一份清单:

letters = ('1', '2', '3', '5', '8', '13', '21')
有了数字
8
,我可以得到它的字母索引,如下所示:
字母索引('8')

不,我有一个数组,它只包含字母形式的数字

numbers = [3, 8, 13, 21, 5]
如何对每个元素调用索引(或类似)函数

我想得到的是
[2,4,5,6,3]

是否有索引这样的函数可以在单个元素上获取数组? 如果需要,可以将字母更改为数组

letters = ('1', '2', '3', '5', '8', '13', '21')
numbers = [3, 8, 13, 21, 5]

result = [letters.index(str(n)) for n in numbers]
但是,只有当所有请求都以
字母出现时,这才有效

[letters.index(str(n)) if str(n) in letters else -1 for n in numbers]
您可以尝试此方法来测试请求是否以字母形式出现

[letters.index(str(n)) if str(n) in letters else -1 for n in numbers]
如果请求不是
字母
,您将有一个
-1
。注意,
-1
在这里表示请求不存在<代码>字母[-1]
返回元组的最后一个元素。

您可以尝试

letters = ('1', '2', '3', '5', '8', '13', '21')
numbers = [3, 8, 13, 21, 5]

result = [letters.index(str(n)) for n in numbers]
但是,只有当所有请求都以
字母出现时,这才有效

[letters.index(str(n)) if str(n) in letters else -1 for n in numbers]
您可以尝试此方法来测试请求是否以字母形式出现

[letters.index(str(n)) if str(n) in letters else -1 for n in numbers]

如果请求不是
字母
,您将有一个
-1
。注意,
-1
在这里表示请求不存在
letters[-1]
返回元组的最后一个元素。

我喜欢使用
map
函数-这是应用新技术的一个大问题

def get_index(letters, element):
    return letters.index(str(element))

indices_of_numbers = list(map(get_index, numbers))
我们可以将其封装在一个函数中,这样我们就可以从
get\u index
中删除
字母
参数

def get_indices_of_numbers(letters, numbers):
    def get_index(element):
        return letters.index(str(element))

    indices_of_numbers = list(map(get_index, numbers))
    return indices_of_numbers

我喜欢使用
map
函数-这是应用新技术的一个大问题

def get_index(letters, element):
    return letters.index(str(element))

indices_of_numbers = list(map(get_index, numbers))
我们可以将其封装在一个函数中,这样我们就可以从
get\u index
中删除
字母
参数

def get_indices_of_numbers(letters, numbers):
    def get_index(element):
        return letters.index(str(element))

    indices_of_numbers = list(map(get_index, numbers))
    return indices_of_numbers

您可以将
字母
转换为int数组,然后使用-

样本运行-

In [42]: letters = ('1', '2', '3', '5', '8', '13', '21')

In [43]: numbers = [3, 8, 13, 21, 5]

In [44]: np.asarray(letters,dtype=int).searchsorted(numbers)
Out[44]: array([2, 4, 5, 6, 3])

如果
字母
导致int数组版本未排序,我们需要使用
搜索排序
输入附加参数
sorter
,您可以将
字母
转换为int数组,然后使用-

样本运行-

In [42]: letters = ('1', '2', '3', '5', '8', '13', '21')

In [43]: numbers = [3, 8, 13, 21, 5]

In [44]: np.asarray(letters,dtype=int).searchsorted(numbers)
Out[44]: array([2, 4, 5, 6, 3])

如果
letters
导致int数组版本未排序,我们需要使用
searchsorted

输入附加参数
sorter
,Python术语挑剔:
letters
是元组,而不是列表<代码>数字
是一个列表,而不是数组。请记住这一点,谢谢!Python术语挑剔:
字母
是元组,而不是列表<代码>数字
是一个列表,而不是数组。请记住这一点,谢谢!