Ale*_*ams 93 python arrays numpy matrix multidimensional-array
我想通过指定2D数组中的列数将1维数组转换为2维数组.有点像这样的东西:
> import numpy as np
> A = np.array([1,2,3,4,5,6])
> B = vec2matrix(A,ncol=2)
> B
array([[1, 2],
[3, 4],
[5, 6]])
Run Code Online (Sandbox Code Playgroud)
numpy有没有像我的功能"vec2matrix"那样工作的功能?(我知道你可以像二维数组一样索引一维数组,但这不是我所拥有的代码中的一个选项 - 我需要进行这种转换.)
Mat*_*all 134
你想要reshape阵列.
B = np.reshape(A, (-1, 2))
Run Code Online (Sandbox Code Playgroud)
Pie*_* GM 40
您有两种选择:
如果您不再需要原始形状,最简单的方法就是为数组指定一个新形状
a.shape = (a.size//ncols, ncols)
Run Code Online (Sandbox Code Playgroud)
您可以切换a.size//ncols通过-1自动计算合适的形状.确保a.shape[0]*a.shape[1]=a.size,否则你会遇到一些问题.
您可以使用该np.reshape函数获得一个新数组,其工作方式与上面提供的版本大致相同
new = np.reshape(a, (-1, ncols))
Run Code Online (Sandbox Code Playgroud)
在可能的情况下,new将只是初始数组的视图a,这意味着数据是共享的.但在某些情况下,new数组将是acopy而不是.请注意,np.reshape它还接受一个可选关键字order,该关键字允许您从行主要C顺序切换到列主要Fortran顺序.np.reshape是该a.reshape方法的功能版本.
如果您不能满足要求a.shape[0]*a.shape[1]=a.size,那么您将不得不创建一个新阵列.您可以使用该np.resize功能并将其与之混合使用np.reshape,例如
>>> a =np.arange(9)
>>> np.resize(a, 10).reshape(5,2)
Run Code Online (Sandbox Code Playgroud)
如果您的唯一目的是将一维数组 X 转换为二维数组,请执行以下操作:
X = np.reshape(X,(1, X.size))
Run Code Online (Sandbox Code Playgroud)
小智 9
通过添加新轴将一维数组转换为二维数组。
a=np.array([10,20,30,40,50,60])
b=a[:,np.newaxis]--it will convert it to two dimension.
Run Code Online (Sandbox Code Playgroud)
尝试类似:
B = np.reshape(A,(-1,ncols))
Run Code Online (Sandbox Code Playgroud)
您需要确保可以将数组中的元素数除以ncols。您也可以B使用order关键字按照将数字拉入的顺序进行游戏。