2024-09-30 03:23:29 发布
网友
这个问题是为了python的目的。例如,如果我有一个数组,它的元素是字符串。我可以用len()函数打印每个元素的长度吗?你知道吗
import numpy as np arr = np.array(["qwerty", "uiop", "as"]) # and here is the actual example arr.len()
你可以猜到,最后一排不起作用,但如果有这样的事情,我会非常感激,我设法找到它<;3
我的目标是找到比for循环更好的东西。 提前谢谢!你知道吗
您可以使用^{}方法,并将其应用于内置的len函数:
len
vect_len = np.vectorize(len) >>> vect_len(arr) array([6, 4, 2])
请注意,这将摆脱显式循环,但实现仍然是一个隐藏的循环。如文件所述:
The vectorize function is provided primarily for convenience, not for performance. The implementation is essentially a for loop.
您还可以使用^{}来获得相同的结果,并且在大型数组上可能会看到更好的性能(但可读性较差):
vect_len2 = np.frompyfunc(len, 1, 1) >>> vect_len2(arr) array([6, 4, 2], dtype=object)
在大型数据帧上测试性能:
import timeit arr = np.random.choice(arr,1000000) vect_len = np.vectorize(len) vect_len2 = np.frompyfunc(len, 1, 1) def using_vectorize(arr=arr): return vect_len(arr) def using_frompyfunc(arr=arr): return vect_len2(arr) >>> timeit.timeit(using_vectorize,number=10)/10 0.17760197920142673 >>> timeit.timeit(using_frompyfunc,number=10)/10 0.11580852449988015
frompyfunc倾向于做得更好一点,但是你只能在巨大的数组上看到明显的不同
frompyfunc
老实说,一个好的旧列表理解可以作为小型数组的替代方案(尽管您说过不需要循环):
>>> [len(i) for i in arr] [6, 4, 2]
您可以使用^{} 方法,并将其应用于内置的
len
函数:请注意,这将摆脱显式循环,但实现仍然是一个隐藏的循环。如文件所述:
您还可以使用^{} 来获得相同的结果,并且在大型数组上可能会看到更好的性能(但可读性较差):
在大型数据帧上测试性能:
frompyfunc
倾向于做得更好一点,但是你只能在巨大的数组上看到明显的不同老实说,一个好的旧列表理解可以作为小型数组的替代方案(尽管您说过不需要循环):
相关问题 更多 >
编程相关推荐