¿Cómo asignar un valor de cadena a una matriz en numpy?

Cuando bash asignar una cadena a una matriz como esta:

CoverageACol[0,0] = "Hello" 

Obtuve el siguiente error

 Traceback (most recent call last): File "", line 1, in  CoverageACol[0,0] = "hello" ValueError: setting an array element with a sequence. 

Sin embargo, la asignación de un número entero no produce un error:

 CoverageACol[0,0] = 42 

CoverageACol es una matriz numpy.

¡Por favor ayuda! ¡Gracias!

Obtiene el error porque la matriz de NumPy es homogénea, lo que significa que es una tabla multidimensional de elementos del mismo tipo . Esto es diferente de una lista de listas multidimensional en Python “regular”, donde puede tener objetos de diferente tipo en una lista.

Python regular:

 >>> CoverageACol = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]] >>> CoverageACol[0][0] = "hello" >>> CoverageACol [['hello', 1, 2, 3, 4], [5, 6, 7, 8, 9]] 

NumPy:

 >>> from numpy import * >>> CoverageACol = arange(10).reshape(2,5) >>> CoverageACol array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) >>> CoverageACol[0,0] = "Hello" --------------------------------------------------------------------------- ValueError Traceback (most recent call last) /home/biogeek/ in () ValueError: setting an array element with a sequence. 

Entonces, depende de lo que quieras lograr, ¿por qué quieres almacenar una cadena en una matriz llena para el rest con números? Si eso es realmente lo que desea, puede establecer el tipo de datos de la matriz NumPy en cadena:

 >>> CoverageACol = array(range(10), dtype=str).reshape(2,5) >>> CoverageACol array([['0', '1', '2', '3', '4'], ['5', '6', '7', '8', '9']], dtype='|S1') >>> CoverageACol[0,0] = "Hello" >>> CoverageACol array([['H', '1', '2', '3', '4'], ['5', '6', '7', '8', '9']], dtype='|S1') 

Observe que solo se asigna la primera letra de Hello . Si desea que se asigne la palabra completa, debe establecer una cadena de tipo de protocolo de matriz :

 >>> CoverageACol = array(range(10), dtype='a5').reshape(2,5) >>> CoverageACol: array([['0', '1', '2', '3', '4'], ['5', '6', '7', '8', '9']], dtype='|S5') >>> CoverageACol[0,0] = "Hello" >>> CoverageACol array([['Hello', '1', '2', '3', '4'], ['5', '6', '7', '8', '9']], dtype='|S5') 

Debe configurar el tipo de datos de la matriz :

 CoverageACol = numpy.array([["a","b"],["c","d"]],dtype=numpy.dtype('a16')) 

Esto convierte a ConerageACol en un conjunto de cadenas (a) de longitud 16.