假设我有一个数组a
:
a = np.array([[1,2,3], [4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])
我想将其转换为1D数组(即列向量):
b = np.reshape(a, (1,np.product(a.shape)))
但这又回来了
array([[1, 2, 3, 4, 5, 6]])
这与:
array([1, 2, 3, 4, 5, 6])
我可以将此数组的第一个元素手动转换为1D数组:
b = np.reshape(a, (1,np.product(a.shape)))[0]
但这需要我知道原始数组有多少维(在处理更高维时连接[0])
是否有一种独立于维度的方法从任意ndarray获取列/行向量?
或者,简单地说:
最简单的方法之一是使用
flatten()
,如下例所示:我的阵列是这样的:
使用
flatten()
后:这也是解决此类错误的方法:
使用np.ravel(用于1D视图)或np.flatten(用于1D副本)或np.flat(用于1D迭代器):
注意
ravel()
在可能的情况下返回view
的a
。所以修改b
也会修改a
。ravel()
当1D元素在内存中是连续的时返回view
,但如果通过使用非单位步长(例如a = x[::2]
)对另一个数组进行切片而生成a
,则返回copy
。如果您想要副本而不是视图,请使用
如果只需要迭代器,请使用
np.flat
:相关问题 更多 >
编程相关推荐