2024-04-26 20:46:00 发布
网友
我想通过指定二维数组中的列数,将一维数组转换为二维数组。像这样工作的东西:
> 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]])
numpy是否有一个类似于我编写的函数“vec2matrix”的函数?(我知道您可以像2D数组一样索引1D数组,但在我拥有的代码中这不是一个选项-我需要进行此转换。)
尝试以下方法:
B = np.reshape(A,(-1,ncols))
不过,您需要确保可以将数组中的元素数除以ncols。您还可以使用order关键字来播放将数字拉入B的顺序。
ncols
order
B
你想^{}数组。
B = np.reshape(A, (-1, 2))
其中-1根据输入数组的大小推断新维度的大小。
-1
你有两个选择:
如果不再需要原始形状,最简单的方法是将新形状指定给数组
a.shape = (a.size//ncols, ncols)
您可以通过-1切换a.size//ncols来自动计算正确的形状。确保a.shape[0]*a.shape[1]=a.size,否则会遇到一些问题。
a.size//ncols
a.shape[0]*a.shape[1]=a.size
您可以使用np.reshape函数获得一个新的数组,其工作原理与上面介绍的版本基本相同
np.reshape
new = np.reshape(a, (-1, ncols))
如果可能的话,new将只是初始数组的视图a,这意味着数据是共享的。不过,在某些情况下,new数组将成为一个副本。请注意,np.reshape还接受一个可选关键字order,它允许您从行主C顺序切换到列主Fortran顺序。np.reshape是a.reshape方法的函数版本。
new
a
a.reshape
如果您不能遵守要求a.shape[0]*a.shape[1]=a.size,那么您将不得不创建一个新数组。您可以使用np.resize函数并将其与np.reshape混合,例如
np.resize
>>> a =np.arange(9) >>> np.resize(a, 10).reshape(5,2)
尝试以下方法:
不过,您需要确保可以将数组中的元素数除以
ncols
。您还可以使用order
关键字来播放将数字拉入B
的顺序。你想^{} 数组。
其中
-1
根据输入数组的大小推断新维度的大小。你有两个选择:
如果不再需要原始形状,最简单的方法是将新形状指定给数组
您可以通过
-1
切换a.size//ncols
来自动计算正确的形状。确保a.shape[0]*a.shape[1]=a.size
,否则会遇到一些问题。您可以使用
np.reshape
函数获得一个新的数组,其工作原理与上面介绍的版本基本相同如果可能的话,
new
将只是初始数组的视图a
,这意味着数据是共享的。不过,在某些情况下,new
数组将成为一个副本。请注意,np.reshape
还接受一个可选关键字order
,它允许您从行主C顺序切换到列主Fortran顺序。np.reshape
是a.reshape
方法的函数版本。如果您不能遵守要求
a.shape[0]*a.shape[1]=a.size
,那么您将不得不创建一个新数组。您可以使用np.resize
函数并将其与np.reshape
混合,例如相关问题 更多 >
编程相关推荐