Создайте трехмерный массив через a для l oop дюймов python - PullRequest
0 голосов
/ 18 июня 2020

Я хочу создать трехмерный массив с l oop. Я попытался создать 2D-массив с a for l oop со следующим кодом:

i = 0
wght_prox = np.zeros((250,100), np.float64)
    for i in range(250):
        wght_prox[i]= ((250 - i) /250)
        i = i + 1

И получить желаемый результат:

[[1.    1.    1.    ... 1.    1.    1.   ]
 [0.996 0.996 0.996 ... 0.996 0.996 0.996]
 [0.992 0.992 0.992 ... 0.992 0.992 0.992]
 ...
 [0.012 0.012 0.012 ... 0.012 0.012 0.012]
 [0.008 0.008 0.008 ... 0.008 0.008 0.008]
 [0.004 0.004 0.004 ... 0.004 0.004 0.004]]

Пока все хорошо, но теперь мне нужны точно такие же значения для 3D-массива, где каждое измерение имеет точные значения, как указано выше. Я пробовал это со следующим кодом:

    wght_prox = np.zeros((250,100,8), np.float64)
    for i in range(250):
        wght_prox[i]= ((250 - i) /250)
        i = i + 1
        for k in range(100):
            wght_prox[k]= ((250 - i) /250)
            k = k + 1
            for l in range(8):
                wght_real[l]= ((0 + i) /250)
                l = l + 1

И результат:

[[[1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]
  ...
  [1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]]

 [[1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]
  ...
  [1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]]

 [[1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]
  ...
  [1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]
  [1.    1.    1.    ... 1.    1.    1.   ]]

 ...

 [[0.988 0.988 0.988 ... 0.988 0.988 0.988]
  [0.988 0.988 0.988 ... 0.988 0.988 0.988]
  [0.988 0.988 0.988 ... 0.988 0.988 0.988]
  ...
  [0.988 0.988 0.988 ... 0.988 0.988 0.988]
  [0.988 0.988 0.988 ... 0.988 0.988 0.988]
  [0.988 0.988 0.988 ... 0.988 0.988 0.988]]

 [[0.992 0.992 0.992 ... 0.992 0.992 0.992]
  [0.992 0.992 0.992 ... 0.992 0.992 0.992]
  [0.992 0.992 0.992 ... 0.992 0.992 0.992]
  ...
  [0.992 0.992 0.992 ... 0.992 0.992 0.992]
  [0.992 0.992 0.992 ... 0.992 0.992 0.992]
  [0.992 0.992 0.992 ... 0.992 0.992 0.992]]

 [[0.996 0.996 0.996 ... 0.996 0.996 0.996]
  [0.996 0.996 0.996 ... 0.996 0.996 0.996]
  [0.996 0.996 0.996 ... 0.996 0.996 0.996]
  ...
  [0.996 0.996 0.996 ... 0.996 0.996 0.996]
  [0.996 0.996 0.996 ... 0.996 0.996 0.996]
  [0.996 0.996 0.996 ... 0.996 0.996 0.996]]]

Пока форма и тип правильные, но я ищу этот результат:

[[1.    1.    1.    ... 1.    1.    1.   ]
 [0.996 0.996 0.996 ... 0.996 0.996 0.996]
 [0.992 0.992 0.992 ... 0.992 0.992 0.992]
 ...
 [0.012 0.012 0.012 ... 0.012 0.012 0.012]
 [0.008 0.008 0.008 ... 0.008 0.008 0.008]
 [0.004 0.004 0.004 ... 0.004 0.004 0.004]]

[[1.    1.    1.    ... 1.    1.    1.   ]
 [0.996 0.996 0.996 ... 0.996 0.996 0.996]
 [0.992 0.992 0.992 ... 0.992 0.992 0.992]
 ...
 [0.012 0.012 0.012 ... 0.012 0.012 0.012]
 [0.008 0.008 0.008 ... 0.008 0.008 0.008]
 [0.004 0.004 0.004 ... 0.004 0.004 0.004]]

[[1.    1.    1.    ... 1.    1.    1.   ]
 [0.996 0.996 0.996 ... 0.996 0.996 0.996]
 [0.992 0.992 0.992 ... 0.992 0.992 0.992]
 ...
 [0.012 0.012 0.012 ... 0.012 0.012 0.012]
 [0.008 0.008 0.008 ... 0.008 0.008 0.008]
 [0.004 0.004 0.004 ... 0.004 0.004 0.004]]

1 Ответ

0 голосов
/ 25 июня 2020

Это можно сделать с помощью этого:

import numpy as np
wght_prox = np.zeros((250,100,8), np.float64)
for i in range(250):
    wght_prox[i]= ((250 - i) /250)
    for k in range(100):
        wght_prox[i][k]= ((100 - k) /100)
wght_prox

Вывод:

array([[[1.  , 1.  , 1.  , ..., 1.  , 1.  , 1.  ],
        [0.99, 0.99, 0.99, ..., 0.99, 0.99, 0.99],
        [0.98, 0.98, 0.98, ..., 0.98, 0.98, 0.98],
        ...,
        [0.03, 0.03, 0.03, ..., 0.03, 0.03, 0.03],
        [0.02, 0.02, 0.02, ..., 0.02, 0.02, 0.02],
        [0.01, 0.01, 0.01, ..., 0.01, 0.01, 0.01]],

       [[1.  , 1.  , 1.  , ..., 1.  , 1.  , 1.  ],
        [0.99, 0.99, 0.99, ..., 0.99, 0.99, 0.99],
        [0.98, 0.98, 0.98, ..., 0.98, 0.98, 0.98],
        ...,
        [0.03, 0.03, 0.03, ..., 0.03, 0.03, 0.03],
        [0.02, 0.02, 0.02, ..., 0.02, 0.02, 0.02],
        [0.01, 0.01, 0.01, ..., 0.01, 0.01, 0.01]],

       [[1.  , 1.  , 1.  , ..., 1.  , 1.  , 1.  ],
        [0.99, 0.99, 0.99, ..., 0.99, 0.99, 0.99],
        [0.98, 0.98, 0.98, ..., 0.98, 0.98, 0.98],
        ...,
        [0.03, 0.03, 0.03, ..., 0.03, 0.03, 0.03],
        [0.02, 0.02, 0.02, ..., 0.02, 0.02, 0.02],
        [0.01, 0.01, 0.01, ..., 0.01, 0.01, 0.01]],

       ...,

       [[1.  , 1.  , 1.  , ..., 1.  , 1.  , 1.  ],
        [0.99, 0.99, 0.99, ..., 0.99, 0.99, 0.99],
        [0.98, 0.98, 0.98, ..., 0.98, 0.98, 0.98],
        ...,
        [0.03, 0.03, 0.03, ..., 0.03, 0.03, 0.03],
        [0.02, 0.02, 0.02, ..., 0.02, 0.02, 0.02],
        [0.01, 0.01, 0.01, ..., 0.01, 0.01, 0.01]],

       [[1.  , 1.  , 1.  , ..., 1.  , 1.  , 1.  ],
        [0.99, 0.99, 0.99, ..., 0.99, 0.99, 0.99],
        [0.98, 0.98, 0.98, ..., 0.98, 0.98, 0.98],
        ...,
        [0.03, 0.03, 0.03, ..., 0.03, 0.03, 0.03],
        [0.02, 0.02, 0.02, ..., 0.02, 0.02, 0.02],
        [0.01, 0.01, 0.01, ..., 0.01, 0.01, 0.01]],

       [[1.  , 1.  , 1.  , ..., 1.  , 1.  , 1.  ],
        [0.99, 0.99, 0.99, ..., 0.99, 0.99, 0.99],
        [0.98, 0.98, 0.98, ..., 0.98, 0.98, 0.98],
        ...,
        [0.03, 0.03, 0.03, ..., 0.03, 0.03, 0.03],
        [0.02, 0.02, 0.02, ..., 0.02, 0.02, 0.02],
        [0.01, 0.01, 0.01, ..., 0.01, 0.01, 0.01]]])
...