You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为何两个NumPy数组差值的平方结果为array([3])?求解释

为什么代码返回array([3])

嘿,这个问题其实是踩了Python运算符的小坑啦!让我给你拆解一下:

首先看你的代码:

import numpy as np; vector = np.array([1]); vector2 = np.array([0]); (vector - vector2)^2

你本来想做的应该是计算两个向量差值的平方对吧?但这里的问题出在运算符^上——在Python(包括numpy数组运算)里,^不是平方运算符,而是按位异或(bitwise XOR)

那具体计算过程是这样的:

  • 第一步:计算vector - vector2[1] - [0]得到array([1])
  • 第二步:用这个结果和2做按位异或运算:
    • 1的二进制是0b01
    • 2的二进制是0b10
    • 按位异或的规则是「对应位相同为0,不同为1」,所以0b01 ^ 0b10 = 0b11,转换成十进制就是3

所以最终得到的array([3])里的[3],就是1和2按位异或后的十进制结果,被包装在numpy数组里返回啦。

如果要实现你原本想要的「差值平方」效果,应该用**运算符或者np.square()函数,比如:

(vector - vector2)**2  # 会得到预期的array([1])

内容的提问来源于stack exchange,提问作者Marty

火山引擎 最新活动