【问题标题】:numpy array printing wrong random numbersnumpy 数组打印错误的随机数
【发布时间】:2023-03-17 16:35:01
【问题描述】:

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

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]]]

【问题讨论】:

  • 基本问题是您没有阅读附加文档。
  • empty 准备好文档。
  • 好的,我读了它,我猜它是因为它将它们附加到一个副本,而不是实际的数组。那我能做什么呢?
  • 您还想保留原始“空”数组的那些随机值吗?您正在使用数组而不是 python 列表。

标签: arrays python-3.x numpy matrix


【解决方案1】:

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 的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    相关资源
    最近更新 更多