【问题标题】:Print the elements in an array having character 'a'打印具有字符“a”的数组中的元素
【发布时间】:2021-05-05 04:27:53
【问题描述】:

我们如何编写代码来打印 myarray 中包含 'a' 的元素

myarray = np.array([
  [['car','jeep','bus'],['cat','dog','rat']],
  [['apple','orange','banana'],['London','New York','Paris']]
])

我尝试过使用这种方法,但没有得到任何输出。

import numpy as np
myarray = np.array([
  [['car','jeep','bus'],['cat','dog','rat']],
  [['apple','orange','banana'],['London','New York','Paris']]
])     
         
for i in range(0, len(myarray)):    
    print(i[0])
    if 'i' in myarray:
        print(myarray[0])
    else:
        continue

【问题讨论】:

  • 您使用 Numpy 而不是普通的 python 列表是否有原因?有一个字符串数组,然后循环它们表明 Numpy 可能不是这里的正确工具。

标签: python arrays numpy


【解决方案1】:

Credit 在这种情况下你不需要 NumPy。 下面是一个如何遍历深度嵌套列表并返回每个元素的示例。

x = [[['car','jeep','bus'],['cat','dog','rat']],[['apple','orange','banana'],['London','New York','Paris']]]
def traverse(a):
    if not isinstance(a, list):yield a
    else:
        for e in a:yield from traverse(e)
aWords = [string for string in [e for e in traverse(x)] if 'a' in string]

输出

['car', 'cat', 'rat', 'apple', 'orange', 'banana', 'Paris']

【讨论】:

    【解决方案2】:

    您可以使用numpy.char.find 来做到这一点。

    np.char.find(myarray, 'a')
    

    输出指示找到字符的位置,否则 -1 如果字符不存在:

    array([[[ 1, -1, -1],
        [ 1, -1,  1]],
    
       [[ 0,  2,  1],
        [-1, -1,  1]]])
    

    以下返回找到“a”的元素:

    myarray[np.char.find(myarray, 'a') > -1]
    

    它给出了输出:

    array(['car', 'cat', 'rat', 'apple', 'orange', 'banana', 'Paris'],
      dtype='<U8')
    

    【讨论】:

    • np.char.find 为不存在 'a' 的元素给出 -1。 np.char.find 如果字符出现在位置 0,则给出 0,如果出现在位置 1,则给出 1 等等。要选择包含字符 'a' 的元素,它会选择所有大于 -1 的值。
    • 非常感谢,先生。你的回答对我有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    相关资源
    最近更新 更多