我有一个数组,其中数组中的所有元素也是数组:
a = [[array([ 4.15167139]) array([ 2.80260218]) array([ 3.34189103])
array([ 3.73434426]) array([ 3.76504973]) array([ 3.91946708])
array([ 2.850741]) array([ 1.9985034]) array([ 4.05191836])
array([ 3.46145848]) array([ 2.99489689]) array([ 2.60462582])
array([ 1.91031189]) array([ 2.90006744]) array([ 3.69799451])
array([ 3.83314665]) array([ 4.42917628]) array([ 5.17647658])
array([ 4.63462677]) array([ 4.69085313]) array([ 4.84746095])
array([ 5.04396694]) array([ 5.10152712]) array([ 3.33442499])
array([ 4.87380637]) ...]]
我希望它是与现在相同的形状数组(20,96),但我希望它们是 float ,而不是该数组中的所有元素都是数组:
a = [[ 4.15167139 2.80260218 3.34189103...4.87380637 ...]]
迭代此数组并将所有元素从单个数组更改为 float 的最佳方法是什么?
最佳答案
使用索引删除顶层[]
In [159]: array=np.array
In [161]: a = [[array([ 4.15167139]), array([ 2.80260218]), array([ 3.34189103]),
...: array([ 3.73434426]), array([ 3.76504973]), array([ 3.91946708])]]
In [162]: len(a)
Out[162]: 1
In [163]: len(a[0])
Out[163]: 6
使用concatenate
或stack
来连接数组列表。
In [164]: np.stack(a[0])
Out[164]:
array([[ 4.15167139],
[ 2.80260218],
[ 3.34189103],
[ 3.73434426],
[ 3.76504973],
[ 3.91946708]])
In [165]: np.concatenate(a[0])
Out[165]:
array([ 4.15167139, 2.80260218, 3.34189103, 3.73434426, 3.76504973,
3.91946708])
根据需要 reshape 形状。
在这种情况下,np.array
也可以工作,但我发现concatenate
方法更可靠。有时 np.array
只是生成一个对象数组。
In [166]: np.array(a[0])
Out[166]:
array([[ 4.15167139],
[ 2.80260218],
[ 3.34189103],
[ 3.73434426],
[ 3.76504973],
[ 3.91946708]])
关于python - 将 Numpy 数组中最终作为单独数组的所有元素更改为 float Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44917731/