многократное многократное буферизация

У меня возникли проблемы с редактированием значений в массиве numpy

import numpy as np foo = np.ones(10,10,2) foo[row_criteria, col_criteria, 0] += 5 foo[row_criteria,:,0][:,col_criteria] += 5 

row_criteria и col_criteria являются булевыми массивами (1D). В первом случае я получаю

«Ошибка несоответствия формы: объекты не могут быть переданы в одну форму»

Во втором случае + = 5 вообще не применяется. Когда я делаю

 foo[row_criteria,:,0][:,col_criteria] + 5 

Я получаю модифицированное возвращаемое значение, но изменение значения на месте, похоже, не работает …

Может кто-нибудь объяснить, как это исправить? Благодаря!

One Solution collect form web for “многократное многократное буферизация”

Вы хотите:

 foo[np.ix_(row_criteria, col_criteria, [0])] += 5 

Чтобы понять, как это работает, возьмите этот пример:

 import numpy as np A = np.arange(25).reshape([5, 5]) print A[[0, 2, 4], [0, 2, 4]] # [0, 12, 24] # The above example gives the the elements A[0, 0], A[2, 2], A[4, 4] # But what if I want the "outer product?" ie for [[0, 2, 4], [1, 3]] i want # A[0, 1], A[0, 3], A[2, 1], A[2, 3], A[4, 1], A[4, 3] print A[np.ix_([0, 2, 4], [1, 3])] # [[ 1 3] # [11 13] # [21 23]] 

То же самое работает с булевым индексированием. Кроме того, np.ix_ не делает ничего действительно потрясающего, он просто изменяет его аргументы, чтобы они могли транслироваться друг против друга:

 i, j = np.ix_([0, 2, 4], [1, 3]) print i.shape # (3, 1) print j.shape # (1, 2) 
  • Начинающий расширяет C с помощью Python (в частности, Numpy)
  • Проблема с ошибкой ppton matplotlib
  • ValueError: объект слишком глубокий для желаемого массива при использовании свертки
  • OpenCV: настройка всех пикселей определенного значения BGR на другое значение BGR
  • Создание defaultdict с пустым массивом numpy
  • Нарисуйте ландшафт с помощью python?
  • Почему numpy является «медленным» сам по себе?
  • повторное время с использованием scipy.signal.resample
  • Python - лучший язык программирования в мире.