У меня есть массив NxM numpy, заполненный нулями, и массив 1D numpy размером N со случайными целыми числами от 0 до M-1. Как вы можете видеть, размерность массива соответствует числу строк в матрице. Каждый элемент в целочисленном массиве означает, что в этой заданной позиции в соответствующей строке должна быть установлен в 1. Например:Как использовать другой индекс для каждой строки в массиве numpy?
# The matrix to be modified
a = np.zeros((2,10))
# Indices array of size N
indices = np.array([1,4])
# Indexing, the result must be
a = a[at indices per row]
print a
[[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0]]
Я попытался с помощью индексации a[:,indices]
но это устанавливает одни и те же индексы для каждой строки, и это наконец, устанавливает все строки с единицами. Как установить данный индекс на 1 за строку?
Fantastic. Это означает, что я должен узнать разницу между доступом к строке путем простой нарезки как 0: 2 или просто: для всех строк) и дать индексам доступ к строкам и столбцам в виде пар для установки значения. –
@AlejandroSazo Да, действительно, также не то, что вы можете передавать индексы столбцов и строк в виде кортежа в массив. Так, например, 'a [np.where (индексы) + (индексы,)] = 1' будут выполнять ту же работу. – Kasramvd