在Python中操作3D数组

velaa5lx  于 2023-05-27  发布在  Python
关注(0)|答案(1)|浏览(158)

当我运行下面给出的代码时,我得到了以下错误。还在学习Python,那么我在理解上哪里错了呢?什么是修复?
追溯(最近一次调用):File“main.py“,line 26,in cube[1:3,1:3]= ['','','*'] TypeError:列表索引必须是整数或切片,而不是元组

cube = [[[':(', 'x', 'x'],
         [':)', 'x', 'x'],
         [':(', 'x', 'x'],
         [':(', 'x', 'x']],

        [[':)', 'x', 'x'],  
         [':(', 'x', 'x'], # --> want this element to be ['*', '*', '*']
         [':)', 'x', 'x'], # --> want this element to be ['*', '*', '*']
         [':(', 'x', 'x']],

        [[':(', 'x', 'x'],
         [':)', 'x', 'x'], # --> want this element to be ['*', '*', '*']
         [':)', 'x', 'x'], # --> want this element to be ['*', '*', '*']
         [':(', 'x', 'x']],
         
        [[':(', 'x', 'x'],
         [':)', 'x', 'x'],
         [':)', 'x', 'x'],
         [':(', 'x', 'x']],
         
        [[':(', 'x', 'x'],
         [':)', 'x', 'x'],
         [':)', 'x', 'x'],
         [':(', 'x', 'x']]]
         
cube[1:3, 1:3] = ['*', '*', '*']

print(cube)
oo7oh9g9

oo7oh9g91#

您使用的是嵌套列表,它不是真正的3D数组。我建议你使用numpy来获得真正支持这种基于切片的访问的数组:

import numpy as np
cube = np.array([[[':(', 'x', 'x'],
         [':)', 'x', 'x'],
         [':(', 'x', 'x'],
         [':(', 'x', 'x']],

        [[':)', 'x', 'x'],  
         [':(', 'x', 'x'], 
         [':)', 'x', 'x'], 
         [':(', 'x', 'x']],

        [[':(', 'x', 'x'],
         [':)', 'x', 'x'], 
         [':)', 'x', 'x'], 
         [':(', 'x', 'x']],
         
        [[':(', 'x', 'x'],
         [':)', 'x', 'x'],
         [':)', 'x', 'x'],
         [':(', 'x', 'x']],
         
        [[':(', 'x', 'x'],
         [':)', 'x', 'x'],
         [':)', 'x', 'x'],
         [':(', 'x', 'x']]])
         
cube[1:3, 1:3] = ['*', '*', '*']

print(cube)

输出:

[[[':(' 'x' 'x']
  [':)' 'x' 'x']
  [':(' 'x' 'x']
  [':(' 'x' 'x']]

 [[':)' 'x' 'x']
  ['*' '*' '*']
  ['*' '*' '*']
  [':(' 'x' 'x']]

 [[':(' 'x' 'x']
  ['*' '*' '*']
  ['*' '*' '*']
  [':(' 'x' 'x']]

 [[':(' 'x' 'x']
  [':)' 'x' 'x']
  [':)' 'x' 'x']
  [':(' 'x' 'x']]

 [[':(' 'x' 'x']
  [':)' 'x' 'x']
  [':)' 'x' 'x']
  [':(' 'x' 'x']]]

相关问题