Python 在numpy中将一维数组转换为二维数组

Python 在numpy中将一维数组转换为二维数组,python,arrays,matrix,numpy,multidimensional-array,Python,Arrays,Matrix,Numpy,Multidimensional Array,我想通过指定二维数组中的列数,将一维数组转换为二维数组。工作原理如下: > 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”类似?(我知道你可以像二维数组一样对一维数组进行索引,但这不是我的代码中的选项-我需要进

我想通过指定二维数组中的列数,将一维数组转换为二维数组。工作原理如下:

> 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”类似?(我知道你可以像二维数组一样对一维数组进行索引,但这不是我的代码中的选项-我需要进行此转换。)

你想对数组进行索引吗

B = np.reshape(A, (-1, 2))
其中
-1
根据输入数组的大小推断新维度的大小。

尝试以下操作:

B = np.reshape(A,(-1,ncols))
您需要确保可以将数组中的元素数除以
ncol
。您还可以使用
order
关键字来调整将数字拉入
B
的顺序。

您有两个选项:

  • 如果不再需要原始形状,最简单的方法就是为阵列指定一个新形状

    a.shape = (a.size//ncols, ncols)
    
    您可以通过
    -1
    切换
    a.size//ncols
    ,以自动计算正确的形状。确保
    a.shape[0]*a.shape[1]=a.size
    ,否则会遇到问题

  • 您可以使用
    np.reformate
    函数获得一个新数组,其工作原理与上面介绍的版本基本相同

    new = np.reshape(a, (-1, ncols))
    
    如果可能,
    new
    将只是初始数组
    a
    的一个视图,这意味着数据是共享的。但在某些情况下,
    new
    数组将改为复制。请注意,
    np.reformate
    还接受一个可选关键字
    order
    ,它允许您从行主C顺序切换到列主Fortran顺序
    np.reformate
    a.reformate
    方法的函数版本

如果您不能遵守a.shape[0]*a.shape[1]=a.size的要求,那么您必须创建一个新数组。您可以使用
np.resize
功能,并将其与
np.resformate
混合使用,例如

>>> a =np.arange(9)
>>> np.resize(a, 10).reshape(5,2)
您可以使用numpy软件包中的
flatte()

将numpy导入为np
a=np.array([[1,2],
[3, 4],
[5, 6]])
a_flat=a.flatte()
打印(f“原始数组:{a}\n平坦数组={a_平面}”)
输出:

original array: [[1 2]
 [3 4]
 [5 6]] 
flattened array = [1 2 3 4 5 6]

不使用Numpy将1D数组更改为2D数组

l = [i for i in range(1,21)]
part = 3
new = []
start, end = 0, part


while end <= len(l):
    temp = []
    for i in range(start, end):
        temp.append(l[i])
    new.append(temp)
    start += part
    end += part
print("new values:  ", new)


# for uneven cases
temp = []
while start < len(l):
    temp.append(l[start])
    start += 1
    new.append(temp)
print("new values for uneven cases:   ", new)
l=[i代表范围(1,21)内的i]
部分=3
新=[]
开始,结束=0,零件

如果您的唯一目的是将一维数组X转换为二维数组,则只需执行以下操作:

X = np.reshape(X,(1, X.size))
或者买一个新的

another_array = numpy.reshape(some_array, (1,)+some_array.shape)

这将使尺寸为+1,等于在最外层添加一个括号。还有一个简单的方法,我们可以以不同的方式使用重塑功能:

A_reshape = A.reshape(No_of_rows, No_of_columns)

通过添加新轴将一维数组转换为二维数组

a=np.array([10,20,30,40,50,60])

b=a[:,np.newaxis]--it will convert it to two dimension.

AttributeError:module'numpy'没有属性'flatten'
你能分享你的代码吗?因为numpy确实有
flatte
方法:最好在代码中加入一些解释。你能解释一下你现在的答案与前面的答案以及上面的其他答案有什么不同吗?这也使用了np.reforme?
A=A.reforme(A.shape[0],1)
A_reshape = A.reshape(No_of_rows, No_of_columns)
a=np.array([10,20,30,40,50,60])

b=a[:,np.newaxis]--it will convert it to two dimension.