Почему я получаю следующую ошибку?Valueerror: установка элемента массива с последовательностью - PullRequest
1 голос
/ 04 июля 2019

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

hhh[i,j]=['Ok']

ValueError: установка элемента массива с последовательностью.

yyyy=np.asarray([[ 52.187,  39.141,  26.094],
   [ 57.164,  42.874,  28.583],
   [ 71.619,  53.716,  35.811],
   [ 21.565,  16.174,  10.783],
   [ 67.592,  50.694,  33.796],
   [109.85 ,  82.39 ,  54.928]])
hhh=np.zeros((6,3))
print(hhh)    


for i in range(0,6): 
    for j in range(0,3):
        if yyyy[i,j]<= 100:
            hhh[i,j]=['Ok']
        else:
            hhh[i,j]=['No'] 

Мой ожидаемый результат - получение списка ччч [6,3]«Ок» или «Нет»

1 Ответ

1 голос
/ 04 июля 2019

Учитывая, что вы используете NumPy, у вас есть np.where для этого:

np.where(yyyy<=100, 'OK', 'NO')

array([['OK', 'OK', 'OK'],
       ['OK', 'OK', 'OK'],
       ['OK', 'OK', 'OK'],
       ['OK', 'OK', 'OK'],
       ['OK', 'OK', 'OK'],
       ['NO', 'OK', 'OK']], dtype='<U2')

Если вы хотите список, просто добавьте, .tolist, np.where(yyyy<=100, 'OK', 'NO').tolist()


Обратите внимание, что вы получаете сообщение об ошибке, если по умолчанию np.zeros создаст ndarray из dtype('float64'). Вместо этого вы можете определить np.empty ndarray с той же формой, что и yyyy и с dtype('<U2'), то есть длиной 2 строкой Unicode:

hhh = np.empty(shape=yyyy.shape, dtype='U2')

for i in range(0,6): 
    for j in range(0,3):
        if yyyy[i,j]<= 100:
            hhh[i,j]='Ok'
        else:
            hhh[i,j]='No'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...