我要减去2个numpy。ndarrayh和y,形状分别为(47,1)和(47,)。当我使用python减去下面两个函数时,返回形状为(47,47)的数组。我知道从数学上讲,这个操作应该保持输入数组的维数,但它不是这样工作的。
我使用的操作是:
e = h - y
e = np.subtract(h,y)
这是关于操作的numpy,还是我应该使用其他类型的操作?我如何修复它,使结果数组的尺寸与正确的数学匹配?
对于您提到的元素减法,h
和y
的形状应该是相同的。你所描述的两种方法是相同的。下面的代码可以工作
import numpy as np
a = np.array([1,2,3,4,5,6,7])
b = np.array([[1,2,3,4,5,6,7]])
print(a.shape) # (7,)
print(b.shape) # (1,7)
c = a-b # or np.subtract(a,b)
print(c.shape) # (1,7)
print(c) # [[0,0,0,0,0,0,0]]
可能其中一个数组被调换了。a-b.T
的形状是(7,7),正如你所描述的。
编辑
我忘了你描述了一个列向量。在这种情况下,下面的代码可以完成元素减法:
h.T-y