gpt4 book ai didi

python - Numpy:将一维数组作为二维数组而不进行整形

转载 作者:太空狗 更新时间:2023-10-30 01:01:11 24 4
gpt4 key购买 nike

我需要 hstacking 具有相同行数的多个数组(尽管行数在使用之间是可变的)但列数不同。然而,一些数组只有一列,例如。

array = np.array([1,2,3,4,5])

给出

#array.shape = (5,)

但我希望将形状识别为二维数组,例如。

#array.shape = (5,1)

这样 hstack 就可以把它们结合起来。我目前的解决方案是:

array = np.atleast_2d([1,2,3,4,5]).T
#array.shape = (5,1)

所以我想知道,有没有更好的方法来做到这一点?会

array = np.array([1,2,3,4,5]).reshape(len([1,2,3,4,5]), 1)

变得更好?请注意,我对 [1,2,3,4,5] 的使用只是使示例具体化的玩具列表。实际上,它将是一个更大的列表作为参数传递给函数。谢谢!

最佳答案

查看hstackvstack的代码。其中一个或两个通过 atleast_nd 传递参数。这是一种完全可以接受的 reshape 数组的方式。

其他一些方式:

arr = np.array([1,2,3,4,5]).reshape(-1,1)  # saves the use of len()
arr = np.array([1,2,3,4,5])[:,None] # adds a new dim at end
np.array([1,2,3],ndmin=2).T # used by column_stack

hstackvstack 将它们的输入转换为:

arrs = [atleast_1d(_m) for _m in tup]
[atleast_2d(_m) for _m in tup]

测试数据:

a1=np.arange(2)
a2=np.arange(10).reshape(2,5)
a3=np.arange(8).reshape(2,4)

np.hstack([a1.reshape(-1,1),a2,a3])
np.hstack([a1[:,None],a2,a3])
np.column_stack([a1,a2,a3])

结果:

array([[0, 0, 1, 2, 3, 4, 0, 1, 2, 3],
[1, 5, 6, 7, 8, 9, 4, 5, 6, 7]])

如果您事先不知道哪些数组是一维的,那么 column_stack 最容易使用。其他人需要一个小函数来在应用 reshape 之前测试维度。

Numpy: use reshape or newaxis to add dimensions

关于python - Numpy:将一维数组作为二维数组而不进行整形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28547566/

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