【发布时间】:2020-07-09 20:43:54
【问题描述】:
假设我在 Python 3 中将多个 NxN 2D 数组存储到一个列表中。我想将所有数组折叠成 1 个数组,具有相同的维度 NxN,但是这个新数组的每个元素都包含一个 1xN 数组原始数组中的对应值。
为了给您提供更多上下文,此列表中的每个数组都对应于给定时间的一组值。对于每个新的时间点,我将该数组的更新版本存储到列表中。完成后,我想计算数组中每个 (i,j) 元素的值的标准差。
我尝试使用 for 循环,但我的模拟需要的时间太长,因为这是一组 100,000 个数组。我想知道是否有任何 numpy 或矢量化函数可以帮助我更有效地执行此操作。谢谢!
【问题讨论】:
-
例如,我认为您不能将列表作为 numpy 数组元素;你的意思是向数组添加一个额外的维度,使其成为一个 3d 数组?
-
具体看
numpy.stack-numpy.org/doc/1.19/reference/generated/numpy.stack.html -
例如,如果
x和y都是3x3 numpy 数组,那么numpy.stack([x, y])将是一个2x3x3 数组,或者numpy.stack([x,y], axis=2)将是一个3x3x2 数组(轴默认为0) . -
@alaniwi 您可以将列表作为 numpy 数组元素。事实上,您可以将任何对象存储为 numpy 元素。
-
@Ehsan 有趣,我不知道。 (刚刚没有使用在 python 3 下运行 numpy 的机器,我在 Python 2.7 安装上尝试了它并得到了
ValueError: setting an array element with a sequence。)但是在这种情况下它是否有任何有用的目的,每个元素都有一个列表(所有相同的长度) 与具有额外维度的数组相比?我怀疑不是。