Как создать следующий трехмерный массив?

#python #arrays #python-2.7

#python #массивы #python-2.7

Вопрос:

N * N * N Скажем, у меня есть куб размера N=8 . Каждое измерение куба дискретизируется до 1, так что я обозначил точки (0,0,0), (0,0,1)..(N,N,N) . В каждой помеченной точке я хотел бы присвоить случайное значение и, таким образом, создать массив, который хранит значение в каждой вершине. Например val[0,0,0]=1, val[0,0,1]=1.2 val[0,1,0]=1.3 , …

Как мне написать код на python для достижения этого?

Комментарии:

1. Не могли бы вы, пожалуйста, обновить свой вопрос кодом, который вы пробовали до сих пор?

Ответ №1:

Вы имели в виду это:

 import numpy as np
n = 5
val = np.empty((n, n, n)) # Create an 3d array full of 0's
val[0,0,0] = 11
val[0,0,1] = 33 
print(val[0, 0])
array([ 11.,  33.,   0.,   0.,   0.])
  

Ответ №2:

Вы могли бы просто генерировать списки списков. Хотя это никоим образом не эффективно, это позволит вам получить доступ к вашему кубу, например val[0][0][0] .

 arr = [[[] for _ in range(8)] for _ in range(8)]

arr[0][0].append(1)
  

Ответ №3:

Для больших матриц изучите использование numpy . Это проблема, для решения которой он предназначен