Объект ‘Builtin_function_or_method’ не поддается подписке. Ошибка при использовании NumPy

#python #python-3.x #numpy #numpy-slicing

#python #python-3.x #numpy #numpy-нарезка

Вопрос:

Я новичок в NumPy и создавал скрипт для подсчета количества каждого элемента в слове. На данный момент я разработал это решение для подсчета всех vovels:

 import numpy as np
num = 0
name = np.array['B','A', 'N', 'A', 'N', 'A']
print(name)
vovel = np.array['A', 'E', 'I', 'O', 'U']
for i in (0,4):
    a = name[i:i 1]
    if a in vovel:
        num = num 1
    
print(num)
  

Но этот код снова и снова выдает ошибку типа. Не могли бы вы, пожалуйста, объяснить, что не так, а также как я могу изменить его, чтобы он отображал количество раз, когда происходит каждый ввод.

Комментарии:

1. Вы должны заключить списки в круглые скобки.

2. name = np.array(['B','A', 'N', 'A', 'N', 'A'])

3. Спасибо, но как мне посчитать значения. Все еще застрял на этом

4. Было бы полезно, если бы вы опубликовали сообщение об ошибке. Но не вижу сообщения об ошибке.

Ответ №1:

Я бы попробовал что-то более похожее на это:

Для каждой гласной (vovel), проверьте гласную напротив каждой буквы в имени и выведите количество в конце цикла.

 import numpy as np

name = np.array(['B', 'A', 'N', 'A', 'N', 'A'])
vowels = np.array(['A', 'E', 'I', 'O', 'U'])

print(name)

for vowel in vowels:
    count = 0

    for letter in name:
        if letter == vowel:
            count  = 1

    print(f'{vowel}: {count}')
  

Также стоит упомянуть, что в Python строки повторяемы, что означает, что вы можете выполнять итерации по ним. Это означает, что вместо передачи массива numpy из

 ['B', 'A', 'N', 'A', 'N', 'A']
  

на самом деле вы могли бы просто передать строку

 'BANANA'
  

и вы достигнете тех же результатов

Комментарии:

1. Также только что понял, что пропустил ваш актуальный вопрос, но, как уже ответил @Klaus_D, вам не хватает () вокруг ваших вызовов np.array