【发布时间】:2021-03-10 13:42:29
【问题描述】:
我有两个数组 a 和 b。如果我运行a.shape,我得到(10,),如果我运行(b.shape),我得到(10,),但是这些值中的每一个都是任意嵌套的数组,它们的形状与其他数组本身或与其他数组。例如 a[0].shape 返回 (122,) 和 b[0].shape 返回 (3900,) 和 b[5].shape 返回 (5200,64) 所以它们在同一个数组中甚至不一致。
我知道使用Iterating through a multidimensional array in Python 的递归解决方案它们的元素总数相同(似乎没有标准的 numpy 函数能够根据需要深入到数组中):
def iterThrough(lists):
if not hasattr(lists[0], '__iter__'):
for val in lists:
yield val
else:
for l in lists:
for val in iterThrough(l):
yield val
si = 0
for value in iterThrough(a): #and b
si += 1
两者都返回3066752。我知道这很混乱,但我需要它处于那种形状以便稍后计算数学函数,我猜这样做比重写该方程以反映格式良好的数组更容易。
如何使数组a 的所有嵌套形状与数组b 完全相同?
【问题讨论】:
-
如果你有这些奇怪的数据,我不明白你为什么要使用 Numpy 或者你希望从中获得什么好处。无论如何,您提出的问题毫无意义:您实际上想对这些值做什么?什么规则告诉您原始数组中的任何给定元素应该在重构后的数组中的位置?
-
我不明白你在问什么,如果你“需要它是那种形状”但想要两个数组“完全相同”。你能发布一个预期的输出和当前的形状
-
@Kenan 它不需要(我也不希望它)内容相同,只是形状应该相同。我正在想象类似 pytorch
viewpytorch.org/docs/stable/tensors.html#torch.Tensor.view 的函数,它允许我将其制作成任何我想要的形状,但这些类型的函数似乎不适用于 Numpy 中的这个数组。