numpy数组打印错误的随机数

时间:2017-11-09 02:02:59

标签: arrays python-3.x numpy matrix

我不明白为什么当我打印矩阵列表时,会打印出这些随机值!任何见解都会很棒!谢谢

matList = np.empty([2,2,2], dtype = int)


a = np.array([[1, 0],
          [3, 3]])
b = np.array([[1, 1],
          [3, 3]])

np.append(matList,a)
np.append(matList,b)
print (a)
print (b)
print (matList)

这是我得到的输出

[[1 0]
 [3 3]]
[[1 1]
 [3 3]]
[[[6029427 4259908]
 [3866700 3801155]]

[[5242972 7274610]
 [7471207 7143521]]]

1 个答案:

答案 0 :(得分:2)

empty会返回指定大小的数组,但会随机填充'值,那些曾经发生在那些内存插槽中的内容:

In [936]: mat = np.empty([2,2,2], dtype=int)
In [937]: mat
Out[937]: 
array([[[          0, -1231162112],
        [-1222623584,   139401936]],

       [[  139401936,   139401936],
        [-1230408992, -1222184576]]])
In [938]: a = np.array([[1, 0],
     ...:           [3, 3]])
     ...: b = np.array([[1, 1],
     ...:           [3, 3]])
     ...:           

np.append不仅返回一个新数组,而且没有axis展平两个输入 - 结果是一个数组:

In [939]: np.append(mat,a)
Out[939]: 
array([          0, -1231162112, -1222623584,   139401936,   139401936,
         139401936, -1230408992, -1222184576,           1,           0,
                 3,           3])

你到底想要制作什么?

使用列表追加(以及初始'空'列表)(np.empty数组并不意味着相同的事情):

In [941]: alist = []
In [942]: alist.append(a)
In [943]: alist.append(b)
In [944]: alist
Out[944]: 
[array([[1, 0],
        [3, 3]]), array([[1, 1],
        [3, 3]])]
In [945]: np.array(alist)
Out[945]: 
array([[[1, 0],
        [3, 3]],

       [[1, 1],
        [3, 3]]])

结果是(2,2,2)数组,与np.array([a,b])

相同

您也可以通过设置mat ab的元素来生成此内容(我通常会说by inserting,但我不想混淆你np.insert):

In [951]: mat = np.empty((2,2,2), int)
In [952]: mat[0,:,:]=a
In [953]: mat[1,:,:]=b
In [954]: mat
Out[954]: 
array([[[1, 0],
        [3, 3]],

       [[1, 1],
        [3, 3]]])

这会就地更改mat的值。