【问题标题】:Equation calculations with 4D arrays使用 4D 数组进行方程计算
【发布时间】:2018-08-06 16:52:20
【问题描述】:

基本上我有超过 1000 个形状为 (100,100,1000) 的 3D 数组。所以一些相当大的数组,我需要在一些计算中使用。 python 和 Numpy 的伟大之处在于,可以非常快速地完成对每个元素的计算,而不是交互。例如,我几乎可以立即对每个 3D 数组的每个索引求和。结果是一个大数组,其中包含每个数组的每个索引的总和。原则上,这几乎是我想做的,但是,有一点问题。

我需要做的是使用如下公式:

如前所述,我有大约 1000 个 3D 阵列。总的来说,这个数组的形状是(1000, 100, 100, 1000)。对于 1000 个中的每一个,我还有一个从 1 到 1000 的列表,对应于 1000 个 3D 数组,并且该列表的每个索引都包含 10。如果它有一个1,则该索引的整个 3D 数组应该放在等式的第一项中,如果是 0,它会进入另一个。

然而,我非常怀疑我将如何做到这一点而不转向某种可能会严重破坏计算速度的循环。

【问题讨论】:

  • 尝试一下,如果确实太慢了,回来问一个具体的问题。 SO 不是免费的编码网站。

标签: python numpy multidimensional-array


【解决方案1】:

您可以通过定位 1 和 0 对其进行排序。 比如:

list_ones = np.where(Array[0] == 1)
list_zeros = np.where(Array[0] == 0)

那么Array[list_ones,:,:,:] 将包含所有对应于一的元素,Array[list_zeros,:,:,:] 将对应于所有对应于零的元素。

那么你就可以放

first_term = Array[list_ones,:,:,:]
second_term = Array[list_zeros,:,:,:]

并酌情求和。

这对你的目的有用吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多