Подтвердить что ты не робот

Как печатать массив Numpy без скобок?

Я хочу преобразовать a = [1,2,3,4,5] в a_string = "1 2 3 4 5". Реальный массив numpy довольно большой (50000x200), поэтому я предполагаю, что использование for loops слишком медленное.

4b9b3361

Ответ 1

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

>>> a = [1,2,3,4,5]
>>> ' '.join(map(str, a))
"1 2 3 4 5"

Ответ 2

np.savetxt

import numpy as np
import sys

a = np.array([[0.0, 1.0, 2.0, 3.0]])
np.savetxt(sys.stdout, a)

Вывод:

0.000000000000000000e+00 1.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00

Или, если массив инвертирован:

a = np.array([0.0, 1.0, 2.0, 3.0])
np.savetxt(sys.stdout, a, newline=" ")

Или, если вам действительно нужна строка:

import StringIO
s = StringIO.StringIO()
np.savetxt(s, a)
print s.getvalue()

Вы можете контролировать точность с помощью fmt, чтобы получить:

np.savetxt(sys.stdout, a, fmt="%.3f")

выход:

0.000 1.000 2.000 3.000 

или

np.savetxt(sys.stdout, a, fmt="%i")

выход:

0 1 2 3

Протестировано на Python 2.7.12, numpy 1.11.1.

Ответ 3

Numpy предоставляет две функции для этого array_str и array_repr - любой из них должен соответствовать вашим потребностям. Так как вы можете использовать любой из них, вот пример каждого из них:

>>> from numpy import arange, reshape, array_str
>>> M = arange(10).reshape(2,5)
>>> M
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> array_str(M)
'[[0 1 2 3 4]\n [5 6 7 8 9]]'
>>> array_repr(M)
'array([[0, 1, 2, 3, 4],\n       [5, 6, 7, 8, 9]])'

Эти две функции очень оптимизированы и, как таковые, должны быть предпочтительнее функции, которую вы могли бы написать самостоятельно. Имея дело с массивами такого размера, я бы предположил, что вам нужна вся скорость, которую вы можете получить.

Ответ 4

Если у вас есть массив numpy, а не список (так как вы упоминаете "реальный массив numpy" в своем сообщении), вы можете использовать re.sub в строчном представлении массива

print(re.sub('[\[\]]', '', np.array_str(a)))

Опять же, это предполагает, что ваш массив a был в несколько раз массивным массивом. Это также имеет преимущество в работе над матрицами.