Ваш код, кажется, работает для меня (используя явное пустое пространство имен). Я использую numpy v1.6.1:
In [8]: import numpy as np
In [9]: A = np.array([[(0, 0), (0, 1)], [(1, 0), None]], dtype=object)
In [10]: A[1, 1] = (2, 3)
In [11]: A.shape
Out[11]: (2, 2)
In [12]: A
Out[12]:
array([[(0, 0), (0, 1)],
[(1, 0), (2, 3)]], dtype=object)
Какую версию numpy вы используете?
Обновление Похоже, это проблема, связанная с numpy версией, поскольку я могу воспроизвести ошибку OP, используя numpy v1.5.1 (версия, которая поставляется в комплекте с базовой установкой python в OSX Lion). Я не уверен, что это была ошибка в numpy, которая была исправлена или изменение в реализации. Я бы либо обновил версию numpy до новой, либо использовал бы этот простой обходной путь:
>>> A = np.array([[(0, 0), (0, 1)], [(1, 0), None]], dtype=object)
>>> A[1][1] = (2,3)
>>> A
array([[(0, 0), (0, 1)], [(1, 0), (2, 3)]], dtype=object)
Обновление # 2 Вот общее исправление, которое, надеюсь, вы сможете адаптировать:
>>> C = np.empty((2,2),object)
>>> B = [[(0, 0), (0, 1)], [(1, 0), None]]
>>> C[:] = B
>>> C
array([[(0, 0), (0, 1)],
[(1, 0), None]], dtype=object)
>>> C.shape
(2, 2)
>>> C[1,1] = (2,3)
>>> C
array([[(0, 0), (0, 1)],
[(1, 0), (2, 3)]], dtype=object)