Сделайте ваш c
(более простой способ):
In [377]: c = np.zeros((3,3), int)
In [378]: c
Out[378]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
Попытка присвоить строку целочисленному типу d приводит к ошибке - она не может преобразовать строку в целое число:
In [379]: c[0,2] = 'S'
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-379-d41cf66ff6a1> in <module>
----> 1 c[0,2] = 'S'
ValueError: invalid literal for int() with base 10: 'S'
astype
не работает на месте:
In [380]: c.astype(str)
Out[380]:
array([['0', '0', '0'],
['0', '0', '0'],
['0', '0', '0']], dtype='<U21')
In [381]: c
Out[381]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
Создайте новый массив со строкой dtype:
In [382]: c1 = c.astype(str)
Теперь мы можем присвоить новое строковое значение:
In [383]: c1[0,2] = 'S'
In [384]: c1
Out[384]:
array([['0', '0', 'S'],
['0', '0', '0'],
['0', '0', '0']], dtype='<U21')