【问题标题】:Filtering array strings with Numpy使用 Numpy 过滤数组字符串
【发布时间】:2021-04-28 18:27:59
【问题描述】:

我如何编写一个仅过滤出以“USD”结尾的数组字符串的 numpy 函数。如果没有 for 循环,我将如何执行此过滤器。

import numpy as np
Array= ['BTCUSD', 'ETHUSD', 'David', 'georGe', 'XRPUSD', 'USDAUD', 'ETHUSDC' ]

预期输出

['BTCUSD', 'ETHUSD',  'XRPUSD']

【问题讨论】:

  • numpy 没有快速的字符串方法,所以要小心尝试用numpy 替换列表/字符串方法。

标签: python arrays numpy filter


【解决方案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 数组。

【讨论】:

  • 我的经验是np.char 函数的速度与列表推导差不多。他们仍然使用 python 字符串方法。
  • 我尝试过 a[np.char.endswith(a, 'USD', 'USDT')] 但并没有真正奏效
猜你喜欢
  • 1970-01-01
  • 2021-06-06
  • 2019-04-04
  • 2018-06-17
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2017-07-15
  • 2022-07-04
相关资源
最近更新 更多