Numpy - красивая печать - PullRequest
       10

Numpy - красивая печать

1 голос
/ 27 февраля 2011

У меня есть массив строк.Когда значение в массиве не определено, None печатается так, как вы ожидаете.Можно ли указать значение по умолчанию для значений None?

, например, в следующем я хочу, чтобы "_" вместо None

[[None B C]
 [M None O]
 [X Y None]]

стало бы

[[_ B C]
 [M _ O]
 [X Y _]]

Ответы [ 3 ]

7 голосов
/ 27 февраля 2011

Вы можете также рассмотреть использование маскированного массива:

import numpy as np

x=np.array([[None, 'B', 'C'],
          ['M', None, 'O'],
          ['X', 'Y', None]])
print(x)
# [[None B C]
#  [M None O]
#  [X Y None]]

x=np.ma.masked_equal(x,None)
print(x)
# [[-- B C]
#  [M -- O]
#  [X Y --]]
3 голосов
/ 27 февраля 2011

Numpy имеет возможность создавать логические массивы из условий тестирования, а затем использовать эти логические массивы с пометкой в ​​скобках для изменения выбранных значений. Для строкового массива foo:

is_none = (foo == None)
foo[ is_none ] = "_"

(Да, я знаю, что обычно вы должны использовать is при сравнении с None, но, поскольку вы знаете, что ваш ввод - строка, и я не думаю, что Numpy предоставляет векторизованный оператор is, == будет просто отлично.)

0 голосов
/ 27 февраля 2011

простое решение может заключаться в том, чтобы сначала преобразовать массив в строку, а затем заменить строку None, например, если ваша матрица a:

print(str(a).replace('None','_'))

Вы также можете определить функцию:

def printarray(a): 
    print(str(a).replace('None','_'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...