我怎么能写一个 numpy 函数,它只过滤掉以“USD”结尾的数组字符串。如果没有 for 循环,我将如何执行此过滤器。
import numpy as np
Array= ['BTCUSD', 'ETHUSD', 'David', 'georGe', 'XRPUSD', 'USDAUD', 'ETHUSDC' ]
预期输出
['BTCUSD', 'ETHUSD', 'XRPUSD']
答案 0 :(得分:1)
使用 numpy char.endswith
import numpy as np
a = np.array(['BTCUSD', 'ETHUSD', 'David', 'georGe', 'XRPUSD', 'USDAUD', 'ETHUSDC'])
print(a[np.char.endswith(a, 'USD')])
输出:
['BTCUSD' 'ETHUSD' 'XRPUSD']
对于 list
而不是 np.ndarray
的返回类型,可以使用推导式:
import numpy as np
lst = np.array(['BTCUSD', 'ETHUSD', 'David', 'georGe', 'XRPUSD', 'USDAUD', 'ETHUSDC'])
print([elem for elem in lst if elem.endswith('USD')])
输出:
['BTCUSD', 'ETHUSD', 'XRPUSD']
*推导式方法可用于 Python 列表和 np 数组。