【发布时间】:2012-05-07 16:49:25
【问题描述】:
在 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]])
【问题讨论】:
-
你只需要那个特定的案例,还是像这样的简单案例就足够了?在这种情况下,内置列表可以正常工作,您只需省略逗号。
-
@delnan 两者都不是。我也想将此语法用于更复杂的情况。
标签: python multidimensional-array numpy python-3.x