在每个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术语挑剔:字母
是元组,而不是列表<代码>数字
是一个列表,而不是数组。请记住这一点,谢谢!