【发布时间】:2019-07-15 16:20:13
【问题描述】:
我有一个数组
array = [np.array([[0.76103773], [0.12167502]]),
np.array([[ 0.72017135, 0.1633635 , 0.39956811, 0.91484082, 0.76242736, -0.39897202],
[0.38787197, -0.06179132, -0.04213892, 0.16762614, 0.05880554, 0.59370467]])]
我想将它转换成一个包含 numpy ndarrays 的 numpy 对象数组。所以我试过了,np.array(array),np.array(array, dtype=object),np.array(array, dtype=np.object)
但是他们都给出了同样的错误,ValueError: could not broadcast input array from shape (2,1) into shape (2)。所以基本上,最终结果应该是一样的,只是最终结果的类型是一个numpy对象数组,而不是一个python列表。有人可以帮忙吗?
【问题讨论】:
-
不清楚你的意思,你只想
reshape吗?或者可能只是添加一个新轴:array[:, :, None]?哦,等等,你是不是想把不同大小的数组放入父数组中?您不能这样做,请改用列表。 -
我只想要相同的列表,但我想要一个包含相同元素的 numpy 对象数组而不是列表@Dan
-
你为什么要那个?为什么列表不够好?如果您解释最终目标,这将有所帮助。我很确定您不能像使用列表那样将不同大小的数组放入另一个数组的元素中。这不是数组的目的。
-
@Dan 最后我想做
array1-array2,它们都是numpy对象数组,但各自的元素具有相同的形状,我将数组相互减去。我可以使用列表推导来做到这一点,但这样做似乎更整洁。 -
列表理解是这里的方法,除非你愿意填充它,否则你不能用数组做到这一点。数组的形状必须是超矩形。想想
arr.shape会为您描述的情况返回什么,这没有任何意义。
标签: python python-3.x numpy numpy-ndarray