鱼C论坛

 找回密码
 立即注册
查看: 2030|回复: 5

Python中多维数组的复制的问题

[复制链接]
发表于 2019-11-13 20:42:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天在初始化一个三维数组时,采用一下几个方式初始化一个4X4X4的三维数组,初始化后
1)listpossibility=[[[1,2,3,4]]*4]*4
2)inipossibility=[1,2,3,4]
     listpossibility=[[ listpossibility.copy()]*4]*4
但是在最后对第三维数组进行单独的remove操作时,其他的数组也受影响
比如listpossibility[0][0].remove(1),所有的第三维数组都变成[2,3,4]
我尝试过
listpossibility=
[[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]],
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]],
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]],
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]]
这样初始化一个数组是可以避免这种情况的,但是我觉得这种比较蠢,请问有什么办法可以初始话一个多维数组吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-11-13 20:59:21 | 显示全部楼层
  1. >>> listpossibility=[[[1,2,3,4] for _ in range(4)] for __ in range(4)]
  2. >>> listpossibility
  3. [[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]], [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]], [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]], [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]]
  4. >>> listpossibility[0][0].remove(1)
  5. >>> listpossibility
  6. [[[2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]], [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]], [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]], [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]]
  7. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-13 21:01:05 | 显示全部楼层
  1. listpossibility = [[[1, 2, 3, 4] for i in range(4)] for j in range(4)]
  2. listpossibility[0][0].remove(1)
  3. print(listpossibility)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-13 21:01:15 | 显示全部楼层
  1. listpossibility = [[[1, 2, 3, 4] for i in range(4)] for j in range(4)]
  2. listpossibility[0][0].remove(1)
  3. print(listpossibility)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-15 09:25:40 | 显示全部楼层
我比较懒,喜欢用现成库

  1. In [1]: from numpy import tile

  2. In [2]: import numpy as np

  3. In [3]: array1 = [1, 2, 3, 4]

  4. In [4]: array1 = np.array([1,2,3,4])

  5. In [5]: array2 = np.tile(array1, 16)

  6. In [6]: array1
  7. Out[6]: array([1, 2, 3, 4])

  8. In [7]: array2
  9. Out[7]:
  10. array([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2,
  11.        3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4,
  12.        1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4])

  13. In [8]: array3 = array2.reshape(4,4,4)

  14. In [9]: array3
  15. Out[9]:
  16. array([[[1, 2, 3, 4],
  17.         [1, 2, 3, 4],
  18.         [1, 2, 3, 4],
  19.         [1, 2, 3, 4]],

  20.        [[1, 2, 3, 4],
  21.         [1, 2, 3, 4],
  22.         [1, 2, 3, 4],
  23.         [1, 2, 3, 4]],

  24.        [[1, 2, 3, 4],
  25.         [1, 2, 3, 4],
  26.         [1, 2, 3, 4],
  27.         [1, 2, 3, 4]],

  28.        [[1, 2, 3, 4],
  29.         [1, 2, 3, 4],
  30.         [1, 2, 3, 4],
  31.         [1, 2, 3, 4]]])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 10:13:18 | 显示全部楼层
感谢各位的回复了!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-20 18:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表