在python中创建对象矩阵

时间:2018-11-07 14:52:16

标签: python oop object matrix

我需要在python中建立一个对象矩阵。我发现了各种语言的其他解决方案,但是找不到在python中执行此操作的可靠而有效的方法。

给班上

class Cell():
    def __init__(self):
        self.value = none 
        self.attribute1 = False
        self.attribute2 = False

我想尽可能有效地制作多个“单元”的矩阵。由于矩阵的大小将比20乘20大,因此迭代方法将很有用。任何贡献都是有帮助的

4 个答案:

答案 0 :(得分:2)

如果您已经定义了对象,列表理解可以在以下方面提供帮助:

num_rows = 5
num_cols = 6

row = [Cell()]*num_rows
# The original way doesn't behave exactly right, this avoids 
# deep nesting of the array. Also adding list(row) to create
# a new object rather than carrying references to row to all rows
mat = [list(row) for i in range(num_cols)]

#[[Cell(), Cell(), Cell()...], [...], ..., [Cell(), ..., Cell()]]

如果需要,您也可以将它们包装在numpy.array

NumPy数组已满

您还可以使用内置的numPy full方法,并通过填充了您的值的n numpy数组生成m

mat = numpy.full((num_rows, num_cols), Cell())

可以找到文档here

答案 1 :(得分:0)

也许只是使用嵌套列表?

类似的东西:

mtx = [[0, 1, 2], [3, 4, 5]]
mtx[1][1] # 4

编辑: 您可以使用append方法将元素添加到列表中。

the_list = []
for item in iterator_or_something:
    the_list.append(Cell(item.a, item,b))

如果它是固定大小,并且您知道:

the_list = []
for x in range(0, 500):
    the_list.append(Cell())

答案 2 :(得分:0)

如果您事先知道矩阵的大小,则可以使用np.emptynp.zeros初始化一个numpy数组,然后使用索引来填充单元格。

或者您可以将项目追加到列表中,然后通过np.array(list)转换为数组。 您需要将矩阵作为一个numpy数组,以便进行任何计算。

答案 3 :(得分:0)

Size = 20
Matrix = np.zeros((Size, Size))

for x in range(0, Size):
    for y in range(0, Size):
        Matrix[x][y] = Cell()