我想创建如下所示的5 * 3数组,而无需明确输入。
[[1, 6, 11],
[2, 7, 12],
[3, 8, 13],
[4, 9, 14],
[5, 10, 15]]
我用过以下代码。
np.arange(1, 16).T.reshape((5,3))
但它显示
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12],
[13, 14, 15]])
如何按升序排序数字,使其成为第一个数组?
答案 0 :(得分:6)
这就是你要找的东西:
np.arange(1, 16).reshape((3,5)).T
事实上,按顺序:
np.arange(1,16)
将在1到6的间隔内返回均匀间隔的值(默认步长为1)[http://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html]; .reshape((3,5))
为先前形成的数组[http://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html]赋予了新的形状。新数组将有3行5列; .T
将转置以前重新整形的数组[http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.T.html] 答案 1 :(得分:1)
为了完整起见,值得注意的是,不需要按照当前接受的答案中的建议转置数组。您只需要使用以下参数调用numpy.reshape
:
(5, 3)
,对应于位置参数newshape
,即您要创建的数组的形状。
order='F'
。默认值为'C'
。
以下是order
可选参数 docs 的摘录:
'C'表示使用类似C的索引顺序读取/写入元素,最后一个轴索引变化最快,返回到第一个轴索引变化最慢。 'F'表示使用类似Fortran的索引顺序读/写元素,第一个索引变化最快,最后一个索引变化最慢。
通过这样做,数字按列排列:
In [45]: np.arange(1, 16).reshape((5, 3), order='F')
Out[45]:
array([[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14],
[ 5, 10, 15]])