gpt4 book ai didi

python - 从 AND 到一维数组

转载 作者:IT老高 更新时间:2023-10-28 21:06:24 25 4
gpt4 key购买 nike

假设我有一个数组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 中获取列/行向量?

最佳答案

使用 np.ravel (对于一维 View )或 np.ndarray.flatten (对于一维副本)或 np.ndarray.flat (对于一维迭代器):

In [12]: a = np.array([[1,2,3], [4,5,6]])

In [13]: b = a.ravel()

In [14]: b
Out[14]: array([1, 2, 3, 4, 5, 6])

请注意,ravel() 尽可能返回 aview。所以修改b也会修改a。当一维元素在内存中连续时,ravel() 返回一个 view,但如果,例如,a 是通过使用非单位步长对另一个数组进行切片(例如 a = x[::2])。

如果您想要副本而不是 View ,请使用

In [15]: c = a.flatten()

如果你只想要一个迭代器,使用 np.ndarray.flat:

In [20]: d = a.flat

In [21]: d
Out[21]: <numpy.flatiter object at 0x8ec2068>

In [22]: list(d)
Out[22]: [1, 2, 3, 4, 5, 6]

关于python - 从 AND 到一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13730468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com