假设我有一个数组 a
:
a = np.array([[1,2,3], [4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])
我想将其转换为一维数组(即列向量):
b = np.reshape(a, (1,np.product(a.shape)))
但这返回
array([[1, 2, 3, 4, 5, 6]])
这与以下内容不同:
array([1, 2, 3, 4, 5, 6])
我可以将此数组的第一个元素手动转换为一维数组:
b = np.reshape(a, (1,np.product(a.shape)))[0]
但这需要我知道原始数组有多少维度(并在处理更高维度时连接 [0])
是否有一种与维度无关的方法从任意 ndarray 获取列/行向量?
原文由 Amelio Vazquez-Reina 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 np.ravel (对于一维视图)或 np.ndarray.flatten (对于一维副本)或 np.ndarray.flat (对于一维迭代器):
请注意
ravel()
在可能的情况下返回view
的a
。所以修改b
也会修改a
。ravel()
returns aview
when the 1D elements are contiguous in memory, but would return acopy
if, for example,a
were made使用非单位步长对另一个数组进行切片(例如a = x[::2]
)。如果您想要副本而不是视图,请使用
如果您只想要一个迭代器,请使用
np.ndarray.flat
: