假设我做了一个奇怪的小数组:
>>> a = np.array([[[1,2,3],4],[[4,5,6],5]])
>>> a
array([[[1, 2, 3], 4],
[[4, 5, 6], 5]], dtype=object)
然后将第一列作为切片:
>>> b = a[:,0]
>>> b
array([[1, 2, 3], [4, 5, 6]], dtype=object)
>>> b.shape
(2,)
假设我现在要重塑b,使其形状为(2,3):
>>> b.reshape((-1,3))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: total size of new array must be unchanged
我假设numpy把b中的每个数组当作一个对象,而不是把它本身当作一个数组。问题是,有没有一个好的方法来调整所需的大小?
不能就地更改
b
的形状,但可以使用np.vstack(b)
创建所需形状的副本。我想你可能已经知道这么多了。注意,您没有在
a
的第一列中创建数组,如果检查type(a[0,0])
,您将看到实际上有一个列表。i、 你的切片a[:,0]
实际上是两个列表对象的列向量,它本身不是(也从来不是)数组。在您的特定示例中,可以使用numpy.vstack:
编辑:由于数组
a
不是真正的矩阵,而是数组的集合(正如wim所指出的),您还可以执行以下操作:相关问题 更多 >
编程相关推荐