我有一个非常庞大的numpy数组:
np.array([1, 2, 3, 4, 5, 6, 7 , ... , 12345])
我需要在另一个数组中创建n
元素的子组(在示例n = 3
中),如下所示:
np.array([[1, 2, 3],[4, 5, 6], [6, 7, 8], [...], [12340, 12341, 12342], [12343, 12344, 12345]])
我使用普通的python列表完成了这项工作,只是将子组附加到另一个列表中。但是,我很难在numpy中尝试这样做。
任何想法我该怎么做?
谢谢!
答案 0 :(得分:2)
np.reshape()
:从文档(标题中的链接):
<强>
numpy.reshape(a, newshape, order='C')
强>为数组提供新形状而不更改其数据。
以下是如何将其应用于您的情况的示例:
>>> import numpy as np
>>> a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 12345])
>>> a.reshape((int(len(a)/3), 3))
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 12345]], dtype=object)
请注意,很明显,array
(len(a)
)的长度必须是3
的倍数才能reshape
成{ {1}} 2-dimensional
numpy
,因为它们必须是矩形的。
答案 1 :(得分:2)
您可以使用np.reshape(-1, 3)
,-1
表示&#34;剩下的任何内容&#34;。
>>> array = np.arange(1, 12346)
>>> array
array([ 1, 2, 3, ..., 12343, 12344, 12345])
>>> array.reshape(-1, 3)
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
...,
[12337, 12338, 12339],
[12340, 12341, 12342],
[12343, 12344, 12345]])