我尝试将两个数组按元素相乘,形成一个字符串。你知道吗
有人能建议吗?你知道吗
import numpy as np
def array_translate(array):
intlist = [x for x in array if isinstance(x, int)]
strlist = [x for x in array if isinstance(x, str)]
joinedlist = np.multiply(intlist, strlist)
return "".join(joinedlist)
print(array_translate(["Cat", 2, "Dog", 3, "Mouse", 1])) # => "CatCatDogDogDogMouse"
我收到这个错误:
File "/Users/peteryoon/PycharmProjects/Test3/Test3.py", line 8, in array_translate
joinedlist = np.multiply(intlist, strlist)
numpy.core._exceptions.UFuncTypeError: ufunc 'multiply' did not contain a loop with signature matching types (dtype('<U21'), dtype('<U21')) -> dtype('<U21')
我能够解决使用下面的列表理解。但我很好奇numpy是怎么工作的。你知道吗
def array_translate(array):
intlist = [x for x in array if isinstance(x, int)]
strlist = [x for x in array if isinstance(x, str)]
return "".join(intlist*strlist for intlist, strlist in zip(intlist, strlist))
print(array_translate(["Cat", 2, "Dog", 3, "Mouse", 1])) # => "CatCatDogDogDogMouse"
也许用重复的方法
各种备选方案的时间安排。相对位置可能会随数组的大小而变化(以及是从列表还是数组开始)。所以你自己做测试:
np.repeat
适用于所有类型的数组。你知道吗列表理解使用字符串乘法,不应该被立即忽略。通常是最快的,尤其是从列表开始的时候。你知道吗
Object dtype将string dtype转换为Python字符串,然后将操作委托给string multiply。你知道吗
np.char
将字符串方法应用于数组的元素。虽然方便,但很少快。你知道吗编辑
相关问题 更多 >
编程相关推荐