使用幂运算时NumPy数组输出不同



关于Jupyter笔记本中使用NumPy数组的输出的快速问题。

我定义了一个简单的数组arr = np.array([1, 2, 3], dtype=np.int32),并做了一些操作来适应语法和其他内容,注意到以下内容:

In: arr * arr
Out: array([1, 4 ,9])
In: arr * 5
Out: array([5, 10, 15])
In: arr ** 2
Out: array([1, 4, 9], dtype=int32)

对于幂运算,输出包括dtype。这似乎很无害,因为它没有将数据类型更改为int16(为什么要这样做(或类似的东西,但这有一个明显的区别,我很想知道这背后是否有原因,比如引擎盖下发生的事情决定了输出行为。

提前感谢!

TL:上面@user2357112提供的评论链接中的解决方案摘要:

In: arr = np.array([1, 2, 3])
In: arr.dtype.type
Out: numpy.int32
In: (arr ** 2).dtype.type
Out: numpy.intc
In: (arr.dtype.type) == (arr ** 2).dtype.type
Out: False

因此,打印dtype。这是一些C恐惧的原因。

最新更新