Có phương pháp numpy tương đương với số dựng sẵn pop
cho danh sách python không? popping rõ ràng là doenst làm việc trên mảng numpy, và tôi muốn tránh một danh sách chuyển đổi.python: numpy-equivalent của list.pop?
Trả lời
Không có phương pháp pop
cho mảng NumPy, nhưng bạn chỉ có thể sử dụng cắt cơ bản (mà sẽ hiệu quả vì nó trả về một quan điểm, không phải là một bản sao):
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]))
Nếu có một phương pháp pop
nó sẽ trả về giá trị last
trong y
và sửa đổi y
.
Ở trên,
last, y = y[-1], y[:-1]
gán giá trị cuối cùng để biến last
và sửa đổi y
.
đây là một trong numpy.delete()
's dụ:
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]])
Pop không tồn tại cho mảng NumPy, nhưng bạn có thể sử dụng NumPy lập chỉ mục kết hợp với chuyển dịch cơ cấu mảng, ví dụ hstack/vstack hoặc numpy.delete(), để mô phỏng popping.
Dưới đây là một số chức năng ví dụ tôi có thể nghĩ đến (mà dường như không hoạt động khi chỉ số là -1, nhưng bạn có thể khắc phục điều này với một điều kiện đơn giản):
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]
này trả về mảng mà không hàng/cột bị xuất hiện, cũng như hàng/cột bị xuất hiện riêng biệt:
>>> 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. deque.popleft() và list.pop (0). Có sự khác biệt về hiệu suất không?
- 2. Độ phức tạp thời gian chạy của các hàm danh sách python là gì?
- 3. Tại sao Python "chắp thêm" không "đẩy"?
- 4. Python của
- 5. Proxy trong ứng dụng Python của Python
- 6. Phần Python của giây
- 7. Daemonizing BaseHTTPServer của python
- 8. python random.shuffle của
- 9. Readlines của Python sublines()?
- 10. Mã thoát của Python
- 11. API của Python của OpenCV: FlannBasedMatcher
- 12. Tương đương Python của compareTo của Java()
- 13. Danh sách Optparse của Python
- 14. python - Số tuần của tháng
- 15. Python: Đối diện của `datetime.date.isocalendar()`
- 16. Chức năng ".format" của python
- 17. Thay đổi IP của Python
- 18. Mục đích của Python __repr__
- 19. (python) ý nghĩa của st_mode
- 20. wget Vs urlretrieve của python
- 21. Phạm vi deque của Python?
- 22. "permute" của MATLAB trong python
- 23. Python, checksum của một dict
- 24. Python apply_along_axis của nhiều mảng
- 25. So sánh ngày của Python
- 26. hashtr của python trong javascript?
- 27. Lỗi cộng dồn của Python
- 28. Lỗi SUDS của Python - SAXParseException
- 29. Phiên bản Python của freopen()
- 30. Luồng TCP XDR của Python
pop không tồn tại và không được khuyến khích để mô phỏng nó. Bạn sẽ tiếp cận tốt hơn thuật toán bạn cần viết mà không cần sử dụng mẫu pop – Boud