Python 如何在numpy中将一维数组视为(1×n)二维数组?

Python 如何在numpy中将一维数组视为(1×n)二维数组?,python,arrays,numpy,Python,Arrays,Numpy,如果以前有人问过这个问题,我很抱歉,但我似乎找不到答案,或者我没有正确地搜索答案 我目前正在使用numpy用python编写代码,我的函数将输入作为矩阵。我想将一维数组视为(1×n)二维数组 这是我的问题的一个最小的例子。下面的函数接受两个矩阵的输入,并将第一个矩阵的左上角元素添加到第二个矩阵的右下角元素 import numpy as np def add_corners(A, B): r = A[0, 0] + B[B.shape[0] - 1, B.shape[1] - 1]

如果以前有人问过这个问题,我很抱歉,但我似乎找不到答案,或者我没有正确地搜索答案

我目前正在使用numpy用python编写代码,我的函数将输入作为矩阵。我想将一维数组视为(1×n)二维数组

这是我的问题的一个最小的例子。下面的函数接受两个矩阵的输入,并将第一个矩阵的左上角元素添加到第二个矩阵的右下角元素

import numpy as np


def add_corners(A, B):
    r = A[0, 0] + B[B.shape[0] - 1, B.shape[1] - 1]
    return r


C = np.array([[1, 2, 3], [4, 5, 6]])
D = np.array([[9, 8], [7, 6], [5, 4], [10, 11]])
E = np.array([1, 2, 3, 4, 5])

print(add_corners(C, D))
print(add_corners(C, E))
print(add_corners(C,E))
会导致错误,因为
E.shape[1]
没有很好的定义。有没有一种方法可以绕过这个问题,而不必添加if语句来检查我的输入是否包含1D数组?也就是说,我想将E的条目称为
E[1,x]
,而不仅仅是
E[x]


非常感谢您的帮助

您需要的是添加一个附加维度。您可以选择:

add_corners(C, E[:, None])
或与:


下面是它的样子:

>>> E
array([1, 2, 3, 4, 5])

>>> E[:, None]
array([[1],
       [2],
       [3],
       [4],
       [5]])

>>> E[:, None].shape
(5, 1)

使用迭代器更简单、更方便:

def add_corners(A, B):
    return A.flat[0] + B.flat[-1]

如果没有错误消息,请发布错误消息或提供更详细的错误描述。
def add_corners(A, B):
    return A.flat[0] + B.flat[-1]