我不明白为什么当我打印矩阵列表时,会打印出这些随机值!任何见解都会很棒!谢谢
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]]]
答案 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
a
和b
的元素来生成此内容(我通常会说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
的值。