Есть ли метод numpy, который эквивалентен встроенному pop
для списков python? по-видимому, doenst работает на массивах numpy, и я хочу избежать преобразования списка.python: numpy-эквивалент list.pop?
ответ
Там нет pop
метода NumPy массивов, но вы могли бы просто использовать базовую нарезку (что было бы эффективным, поскольку он возвращает представление, а не копия):
In [104]: y = np.arange(5); y
Out[105]: array([0, 1, 2, 3, 4])
In [106]: last, y = y[-1], y[:-1]
In [107]: last, y
Out[107]: (4, array([0, 1, 2, 3]))
Если бы были pop
метода его возвратит значение last
в y
и изменит y
.
Выше
last, y = y[-1], y[:-1]
присваивает последнее значение переменной last
и изменяет y
.
это один из примера numpy.delete()
«s:
import numpy as np
arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
print(arr)
# array([[ 1, 2, 3, 4],
# [ 5, 6, 7, 8],
# [ 9, 10, 11, 12]])
np.delete(arr, 1, 0)
print(arr)
# array([[ 1, 2, 3, 4],
# [ 9, 10, 11, 12]])
Поп не существует для NumPy массивов, но вы можете использовать NumPy индексирование в сочетании с реструктуризацией массива, например hstack/vstack или numpy.delete(), чтобы эмулировать выскакивание.
Вот некоторые примеры функции я могу думать (что, по-видимому, не работает, когда индекс -1, но вы можете исправить это с помощью простого условного):
def poprow(my_array,pr):
""" row popping in numpy arrays
Input: my_array - NumPy array, pr: row index to pop out
Output: [new_array,popped_row] """
i = pr
pop = my_array[i]
new_array = np.vstack((my_array[:i],my_array[i+1:]))
return [new_array,pop]
def popcol(my_array,pc):
""" column popping in numpy arrays
Input: my_array: NumPy array, pc: column index to pop out
Output: [new_array,popped_col] """
i = pc
pop = my_array[:,i]
new_array = np.hstack((my_array[:,:i],my_array[:,i+1:]))
return [new_array,pop]
Это возвращает массив без выскочившая строка/столбец, а также всплывающая строка/столбец отдельно:
>>> A = np.array([[1,2,3],[4,5,6]])
>>> [A,poparow] = poprow(A,0)
>>> poparow
array([1, 2, 3])
>>> A = np.array([[1,2,3],[4,5,6]])
>>> [A,popacol] = popcol(A,2)
>>> popacol
array([3, 6])
- 1. Python list.pop() не работает должным образом
- 2. его кажется python 'list.pop()' не работает как должно
- 3. PYTHON - изменение индекса для из-за вызова list.pop()
- 4. python list.pop() изменяет исходный список (а не только копию)
- 5. Python: list.pop (0) дает индексную ошибку, пока список заполнен
- 6. List.pop() в Django Шаблон без цикла
- 7. Проблема с реверсивным списком, используя list.pop()
- 8. deque.popleft() и list.pop (0). Есть ли разница в производительности?
- 9. Функция для рекурсивной функции python
- 10. Почему Python «добавляет» не «push»?
- 11. Как найти количество экземпляров элемента в списке python
- 12. Массив объектов в Python
- 13. Какова временная сложность появления элементов из списка в Python?
- 14. Список Python pop() намного медленнее, чем список [1:]
- 15. Как удалить и вернуть элемент в список python
- 16. Итерация через список в python
- 17. Python Список Отдел/Расщепление
- 18. Python List Column Move
- 19. Конкатенация Python без использования Join
- 20. Циклы списка и while - Python
- 21. Преобразование функций Python в R Функция
- 22. Python Вычитание чисел в списке, чтобы вернуть значение
- 23. Как удалить пользовательский объект класса из списка в python?
- 24. Создайте функцию, которая переупорядочивает элемент в списке и перемещает другие элементы (Python)
- 25. Будет ли pop (0) скопировать все элементы
- 26. Как метод .pop() может переопределить переменную только значением другого?
- 27. Ошибка программы для этого решения
- 28. Python bdist_rpm Требуется Python
- 29. Python: печать в python?
- 30. Python внутри python
Поп не существует в numpy и по дизайну не рекомендуется эмулировать его. Вы бы лучше подошли к алгоритму, который вам нужно написать, не используя поп-паттерн – Boud