Это действительно простая вещь, но после прочтения документации я все еще не могу этого сделать. Я просто хочу создать список из 9 подсписков следующим образом
[[0, 0.05, 0.1, ..., 25],[0, 0.05, 0.1, ..., 25],[0, 0.05, 0.1, ..., 25],[0, 0.05, 0.1, ..., 25],[0, 0.05, 0.1, ..., 25],[0, 0.05, 0.1, ..., 25],[0, 0.05, 0.1, ..., 25],[0, 0.05, 0.1, ..., 25],[0, 0.05, 0.1, ..., 25]]
я делаю
[np.arange(0, 25.05, 0.05), np.arange(0, 25.05, 0.05), np.arange(0, 25.05, 0.05),
np.arange(0, 25.05, 0.05), np.arange(0, 25.05, 0.05), np.arange(0, 25.05, 0.05),
np.arange(0, 25.05, 0.05), np.arange(0, 25.05, 0.05), np.arange(0, 25.05, 0.05)]
но я получаю 24.9 , 24.95, 25. ])]
, хотя мне бы хотелось получить 24.9 , 24.95, 25. ]])]
. Как мне это сделать?
Что бы вы использовали? Спасибо!
Зависит от того, почему вы вообще используете NumPy и действительно ли вам нужны списки. Похоже, вы не понимаете разницу между списками и массивами и что означают все эти символы, которые вы видите.
Если вы используете NumPy просто потому, что он кажется удобным способом создания этих списков, то я, вероятно, вместо этого напишу генератор списков. Если вам действительно нужно использовать функциональность NumPy, то я бы вместо этого использовал numpy.linspace для создания строки (избегая проблем с округлением, которые возникают при использовании numpy.arange
для этого), а затем использовал бы что-то вроде numpy.tile чтобы повторить эту строку в 2D-массиве.
Вот один список: [i * 0.05 for i in range(25*20 + 1)]
[[i*5/100 for i in range(501)] for _ in range(9)]
Лучше всего использовать list()
:
step = 0.05
sublist = [round(i * step, 2) for i in range(int(25 / step) + 1)]
res = [sublist.copy() for _ in range(9)]
print(res)
Вы можете использовать tolist()
с deepcopy()
:
import numpy as np
import copy
sublist = np.arange(0, 25.05, 0.05).tolist()
res = [copy.deepcopy(sublist) for _ in range(9)]
print(res)
list()
.Вы можете создать такой список списков без numpy и преобразования диапазонов в списки и из них.
Просто используйте конкатенацию списков, чтобы добавлять элементы в списки:
В приведенном ниже примере создается пример меньшего размера:
[[x/20 for x in range(int(1.05*20))] for _ in range(3)]
Результат:
[[0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0], [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0], [0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0]]
Итак, чтобы сгенерировать тот, который вы просили в исходном сообщении, будет:
[[x/20 for x in range(int(25.05*20))] for _ in range(9)]
Если вам нужны списки, почему вы используете
numpy.arange
— функцию, которая не создает списки?