【问题标题】:initialize objects in numpy matrix初始化numpy矩阵中的对象
【发布时间】:2015-07-08 09:25:04
【问题描述】:

我想要一个充满独特对象的 numpy 矩阵。目前我正在创建一个列表列表,然后将其转换为一个 numpy 数组(参见下面的代码,在解决方法下)。我使用它是因为我想使用切片来访问矩阵中的元素

我想知道是否有更好的方法来创建这样的矩阵。

import random
import numpy as np

class RandomCell(object):
    def __init__(self):
        self.value = random.randint(0, 10)
    def __repr__(self):
        return str(self.value)

# workaround
temp_matrix = [[RandomCell() for row in range(3)] for col in range(3)]
workaround_matrix = np.array(temp_matrix)

编辑:我想创建一个对象矩阵而不是生成随机数矩阵

【问题讨论】:

    标签: python arrays numpy matrix


    【解决方案1】:

    您从列表列表构建数组的方法很好。另一种选择是

    arr = np.array([RandomCell() for item in range(9)]).reshape(3,3)
    

    通常,为了节省内存,您可以使用np.fromiter 从迭代器构建数组。但是,由于该数组的 dtype 为 object,不幸的是,np.fromiter 在这种情况下不是一个选项。

    【讨论】:

      【解决方案2】:

      其实很简单

      import numpy as np
      np.random.randint(0, 10, (3,3))
      

      【讨论】:

      • 我想创建对象。不生成随机数。我的道歉
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多