我需要hstacking multple数组,它具有相同的行数(尽管行数在不同的用法之间是可变的),但列数不同。但是有些数组只有一列,例如
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]的使用只是一个玩具列表,使示例具体化。实际上,它将是一个更大的列表,作为参数传递到函数中。谢谢!
如果我正确理解您的意图,您希望将形状数组(N,)转换为形状数组(N,1),以便可以应用
np.hstack
:在这种情况下,可以使用避免改变数组的形状,而使用^{} 代替:
只是想补充一下帕吉的回答。我很好奇这四种方法描述得有多快。获胜者是在1d数组末尾添加列的方法。
下面是我所说的:
结果是:
检查
hstack
和vstack
的代码。其中一个或两个,通过atleast_nd
传递参数。这是一种完全可以接受的重塑数组的方法。其他一些方式:
hstack
和vstack
将它们的输入转换为:测试数据:
结果:
如果您不提前知道哪些数组是1d,那么
column_stack
是最容易使用的。另一些则需要一个小函数,在应用整形之前测试维度。Numpy: use reshape or newaxis to add dimensions
相关问题 更多 >
编程相关推荐