【发布时间】:2018-01-03 19:38:23
【问题描述】:
我有一个由数组组成的 NumPy 数组(长度为 X),所有这些数组的长度(Y)都相同,但其类型为“object”,因此具有维度(X,)。我想将其“转换”为具有成员数组元素类型(“float”)的维度(X,Y)数组。
我能看到的唯一方法是“手动”使用类似的东西
[x for x in my_array]
有没有更好的成语来完成这种“转换”?
例如我有类似的东西:
array([array([ 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.]),
array([ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.]),
array([ 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.]), ...,
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]),
array([ 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]),
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.])], dtype=object)
其中有 shape (X,) 而不是 (X, 10)。
【问题讨论】:
-
你最初是如何得到这个数组的?这种事情通常意味着你在程序的早期做错了什么。我怀疑子数组的长度并不相同。
-
np.transpose(your_array).astype(float)
-
@Mr_U4913: "ValueError: setting an array element with a sequence"
-
@user2357112:子数组确实具有相同的长度。 @user2357112:我从two lists of X arrays 的列表开始,其中一个列表中的所有数组的长度为 Y,然后我将其转置(出于多种原因)并用例如
[:,1]对其进行切片,这会产生问题结构。 -
@raxacoricofallapatorius:听起来你肯定做错了什么。也许在转置中。
标签: python arrays numpy data-conversion