我试图了解如何在javascript中使用object.prototype函数然后我遇到了这段代码.我不明白?
// Poisoning Object.prototype
Object.prototype.bar = 1;
var foo = {goo: undefined};
foo.bar; // 1
'bar' in foo; // true
foo.hasOwnProperty('bar'); // false
foo.hasOwnProperty('goo'); // true
Run Code Online (Sandbox Code Playgroud)
foo有属性栏,它在第3行中定义并且值为undefined.请指导为什么在这种情况下foo.hasOwnProperty('bar')返回false
我在理解numpy dot函数和广播背后的工作时遇到了问题.Below是我试图理解的片段
a=np.array([[1,2],[3,5]])
如果我们检查的形状
a.shape
将是(2,2)
b=np.array([3,6])
和 b.shape is (2,)
问题1:是b列向量还是行向量?虽然提供输入似乎b是行向量,但然后形状显示为具有2行的列向量.我的理解中的错误是什么?
现在,如果
a.dot(b)
它导致
array([15,39])
问题2:按矩阵乘法如果a是m*n则b必须n*k并且由于a是2×2然后b必须是2*1.这是否验证是否b为列向量,否则如果它是行向量则矩阵乘法不可能,但点积的输出确实根据矩阵乘法给出值b作为列向量并广播它
现在b.dot(a)也是可能的,并且导致了
array([21,36])这一点,这引起了我的注意.他们如何检查向量的矩阵乘法的兼容性以及它们如何计算?在至少一个场景中,它们必须抛出不兼容维度的错误以进行乘法.但是它没有显示,并且它们在两种情况下都计算结果.