当你存储一个没有分配足够内存的 numpy 数组时会发生什么?

What happens when you store a numpy array with not enough memory allocated?

我只是在研究 np.array 及其内存分配,我预计如果您尝试存储一个对于内存分配来说太大的数组,您只会得到一个错误或者只会存储前 x 位数。相反,我只是找回了看似随机的数字。这里的幕后发生了什么?

import numpy as np

def create_new_array(num_list):
  new_array = np.array(num_list,np.int8)
  return print(new_array)

create_new_array([31112 , 32321, 24567,456,324,789])

输出: [-120, 65, -9, -56, 68, 21]

稍微改变输入值会产生完全不同的输出,我很好奇这是为什么。

数字不是随机的;它们是互补。对于int8,它能表示的最大正数是127,返回大于127的数的补码。例如:

>>> create_new_array([125, 126, 127, 128, 129, 130])
array([ 125,  126,  127, -128, -127, -126], dtype=int8)