2015-04-29 4 views
1

Я пытаюсь создать массив строк, которые все '< =', '> =' и '='.
Это код, который я сделал:Как сделать знак неравенства и знак равенства в строку

del_str=np.zeros((Nnodes*ndofs),dtype=str) 
    for i in range(Nnodes*ndofs): 
     if dels[i]>0: 
      del_str[i]="<=" 
     elif dels[i]<0: 
      del_str[i]=">=" 
     else:    
      del_str[i]="=" 

Я думаю, что это должно работать, но когда я проверить его с принтом я только этим:

['=' '=' '=' '=' '=' '=' '<' '>' '<' '>' '>' '<' '>' '>' '>' '>' '>' '>' '>' '>' '>' '>' '>' '>' '>' '>' '>' '>' '=' '=' '=' '=' '<' '>'] 

Где я ошибся ?? Я даже пробовал:

del_str=np.zeros((Nnodes*ndofs),dtype=str) 
    for i in range(Nnodes*ndofs): 
     if dels[i]>0: 
      del_str[i]="<"+"=" 
     elif dels[i]<0: 
      del_str[i]=">"+"=" 
     else:    
      del_str[i]="=" 

но он все еще не работает. Пожалуйста, дайте мне знать, что мне не хватает.

ответ

3

Ваш datatype позволяет хранить только один символ. Попробуйте:

del_str = np.zeros((Nnodes*ndofs), dtype='|S2') 

демо:

dtype=str:

>>> del_str = np.zeros(10, dtype=str) 
>>> del_str 
array(['', '', '', '', '', '', '', '', '', ''], 
     dtype='|S1') 
>>> del_str[0] = '<=' 
>>> del_str 
array(['<', '', '', '', '', '', '', '', '', ''], 
     dtype='|S1') 

dtype='|S2':

>>> del_str = np.zeros(10, dtype='|S2') 
>>> del_str 
array(['', '', '', '', '', '', '', '', '', ''], 
     dtype='|S2') 
>>> del_str[0] = '<=' 
>>> del_str 
array(['<=', '', '', '', '', '', '', '', '', ''], 
     dtype='|S2')