【问题标题】:Create 3d np array with tuple elements使用元组元素创建 3d np 数组
【发布时间】:2021-03-02 00:59:33
【问题描述】:

我想为每个元素创建一个维度为 (100x100x100) 的 3-D np.array,并使用元组 (-1,-1,-1)。有没有比以下更快/更好的方法:

np.array([[[(0,0,0) for x in range(100)] for y in range(100)] for z in range(100)])

?

【问题讨论】:

  • 解释为什么你需要一个包含元组元素的数组。这不是计算上的最佳阵列。还请告诉我们您的代码生成的数组。 shapedtype 是什么。这真的是元组数组吗?

标签: python python-3.x numpy numpy-ndarray


【解决方案1】:

如您所见,数组的形状实际上是(100, 100, 100, 3)

>>> np.array([[[(0,0,0) for x in range(100)] for y in range(100)] for z in range(100)]).shape
(100, 100, 100, 3)

您可以使用np.full 函数来生成所需的数组。

np.full([100, 100, 100, 3], -1)

这将创建一个 100x100x100x3 的 numpy 数组,它根据需要具有与您的等效结构。

>>> (np.array([[[(0,0,0) for x in range(100)] for y in range(100)] for z in range(100)]) == np.full([100, 100, 100, 3], 0)).all()
True

np.full() 的文档

【讨论】:

    【解决方案2】:

    您的代码并未真正创建 (100x100x100) 数组。

    也许你可以试试:

    np.ones((100, 100, 100))*-1
    

    【讨论】:

    • 这不是 OP 所追求的形状,它们的数组有形状 (100, 100, 100, 3)
    猜你喜欢
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2019-09-13
    • 2020-12-30
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多