在 NumPy 中,可以将整个数组段:
作为索引范围的通配符进行分配。例如:
>>> (n, m) = (5,5)
>>> a = numpy.array([[0 for i in range(m)] for j in range(n)])
>>> a
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
>>> for i in range(n):
... a[i, :] = [1 for j in range(m)]
>>> a
array([[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]])
但是,numpy.array
仅保存数字数据。我需要一个可以容纳任意对象并且可以像 NumPy 数组一样寻址的数组类型。我应该使用什么?
编辑:我想要这个范围分配语法的完全灵活性,例如这也应该工作:
>>> a[:,1] = 42
>>> a
array([[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1],
[ 1, 42, 1, 1, 1]])