J.R.
У вас же перед циклом z - пустой, а в цикле вы просите чтобы значение, которого не существует было изменено на ваше желаемое, но так не бывает, он вам и пишет что индекс списка вне диапазона - то есть нет у него адреса даже такого. Чтоб ваше выражение в цикле со списком z получилось, в него нужно положить сначала что-то, для этого есть метод append. А уж когда z-итое-житое будет иметь хоть какое-то значение, тогда его можно менять в той манере, в которой вы пытаетесь его менять.
Большое спасибо))
import numpy as np
a = ['0110','1111','0000']
z = np.random.randint(0, 10, [3,4])
for i in range (3):
s=a[i]
for j in range (4):
z[i][j]= s[j]
print (z)
g = z[1][1] + z[1][2]
print (g)
---------------------------
[[0 1 1 0]
[1 1 1 1]
[0 0 0 0]]
2 #g = z[1][1] + z[1][2]
---------------------------
# тоже самое но без библиотеки нампи
n = 3
m = 4
d= [[0] * m for i in range(n)]
print (d)
for i in range (3):
s=a[i]
for j in range (4):
d[i][j]= s[j]
print (d)
p = d[1][1] + d[1][2]
print (p)
-------------------------------
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
[['0', '1', '1', '0'], ['1', '1', '1', '1'], ['0', '0', '0', '0']]
11 #p = d[1][1] + d[1][2]
-------------------------------
В итоге получилось даже лучше чем предполагалось:
Во-первых отображение массива в матрице сразу
Во-вторых каким-то
магическим образом поменялся тип данных со строчки в целочисленную десятиричную систему счисления
Но в связи с этими чудесами возникают 2 вопроса - почему так:
Почему если использовать встроенную библиотеку массив записывается не в виде матрицы, а если использовать numpy, то все наоборот?
Почему массив, созданный с помощью numpy, самовольно решает какой тип данных использовать?