Quiero convertir una matriz numpy en una representación de cadena y tengo problemas cuando la cantidad de dígitos en la matriz numpy no es constante. Considere los dos casos:

import numpy as np

arr = np.array([0,0])
arr_str = str(arr).strip("[]")
print("String:", arr_str)
print("Len:", len(arr_str))

arr = np.array([10,0])
arr_str = str(arr).strip("[]")
print("String:", arr_str)
print("Len:", len(arr_str))
 

El resultado de esto es:

String: 0 0
Len: 3
String: 10  0
Len: 5

El primer caso tiene los dos dígitos separados por un solo espacio mientras que el segundo tiene dos espacios. La longitud de la segunda cuerda debería haber sido 4 y no 5 si no fuera por el espacio extra. ¿Hay alguna forma de convertir numpy en cadena para que cada elemento esté separado consistentemente por un solo espacio?

Esto fue con python 3.8 y numpy 1.19.2

0
Ananda 27 feb. 2021 a las 07:29

2 respuestas

La mejor respuesta

Ya hiciste la mayor parte del trabajo. Ahora simplemente split la cadena y re - join con espacios simples:

num_list = arr_string.split()
print(' '.join(num_list))
1
Prune 27 feb. 2021 a las 04:37

Estoy confundido. Numpy los está separando constantemente. Numpy identificó que sus datos consistían en datos de dos dígitos. Como tal, proporcionó dos caracteres de espacio para cada entrada. ¿De qué otra manera hubieras querido que Numpy lo hiciera? Tomar como ejemplo,

x = np.array([[10,0],[20,30]])

¿Desea que la primera fila tenga 4 caracteres y la segunda 5 caracteres? Eso se vería bastante extraño.

0
Bobby Ocean 27 feb. 2021 a las 04:40