【问题标题】:Get the index of a starred value in a large numpy array获取大型 numpy 数组中星标值的索引
【发布时间】:2020-03-22 06:51:35
【问题描述】:

我有 12 个 numpy 数组,每个数组包含大约 1000 个值。一些值周围有一个星号,表示我需要从数组中删除该值。其他人没有,很难检查这些在哪里。下面的代码类似(但较小的例子):

nums1 = np.array([654, 648, 213, *684*, 516, 654, *987*, 321])
nums2 = np.array([68, 89, 36, 879, 78, 213, 89, 79])
nums3 = np.array([432, *87*, 809, 312, 76, *890*, 234, 32])

有什么方法可以测试每一个并获得一个索引数组,以便我可以删除其他数组中的值及其对应的伙伴?这又是一个例子,我的数组要大得多。我的理想输出类似于:

bad_values_nums1 = np.array([3, 6])
bad_values_nums2 = np.array([])
bad_values_nums3 = np.array([1, 5])

【问题讨论】:

  • 星星是怎么加的?
  • 这不是有效的 Python 语法。您的意思是使用字符串值吗?喜欢np.array(['432', '*87*', '809')
  • 其他人刚刚询问了星标值,stackoverflow.com/questions/60793306/…。对字符串和数字是什么感到困惑。

标签: python arrays numpy


【解决方案1】:

假设您的意思是有一个字符串数组,您可以执行以下操作:

nums1 = np.array(['654','648', '213', '*684*', '516', '654', '*987*', '321'])
bad_values_nums1 = [i for i,v in enumerate(nums1) if v[0] == '*' and v[-1] == '*']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 2011-10-18
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    相关资源
    最近更新 更多