我有一个numpy的数组,看起来像:
myArray = np.array([[1,2],[3]])
但是我不能弄平
In: myArray.flatten()
Out: array([[1, 2], [3]], dtype=object)
如果将数组在第二个轴上更改为相同的长度,则可以将其展平。
In: myArray2 = np.array([[1,2],[3,4]])
In: myArray2.flatten()
Out: array([1, 2, 3, 4])
我的问题是:
我可以使用诸如myArray.flatten()
数组的大小及其元素的长度之类的东西来获取输出array([1,2,3])
吗?
myArray
是一维对象数组。您的列表对象将只使用flatten()
或保持相同的顺序ravel()
。您可以用来hstack
按水平顺序堆叠数组:
>>> np.hstack(myArray)
array([1, 2, 3])
请注意,这基本上等效于使用concatenate
1的轴(这在直觉上应该有意义):
>>> np.concatenate(myArray, axis=1)
array([1, 2, 3])
但是,如果您没有此问题并且可以合并项目,则始终最好使用flatten()
或ravel()
提高性能:
In [1]: u = timeit.Timer('np.hstack(np.array([[1,2],[3,4]]))'\
....: , setup = 'import numpy as np')
In [2]: print u.timeit()
11.0124390125
In [3]: u = timeit.Timer('np.array([[1,2],[3,4]]).flatten()'\
....: , setup = 'import numpy as np')
In [4]: print u.timeit()
3.05757689476
Iluengo的答案还为您提供了有关为何无法使用flatten()
或ravel()
指定数组类型的更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句