Hãy chỉ số một lát, danh sách hoặc mảng
X[[0],:]
X[0:1,4]
Nhưng không có gì sai với reshape
khác so với thực tế là nó đòi hỏi gõ là. Nó không chậm. [None,:]
là một bàn tay ngắn đẹp cho nó.
Sử dụng một chỉ số danh sách có thể là ngắn nhất, nhưng nó tạo ra một bản sao (một cộng hoặc trừ?) Và chậm
Đối (100,100)
nguyên mảng:
In [487]: timeit x[[50],:]
100000 loops, best of 3: 10.3 µs per loop # slowest
In [488]: timeit x[50:51,:]
100000 loops, best of 3: 2.24 µs per loop # slice indexing is fast
In [489]: timeit x[50,:].reshape(1,-1)
100000 loops, best of 3: 3.29 µs per loop # minimal time penalty
In [490]: timeit x[50,:][None,:]
100000 loops, best of 3: 3.55 µs per loop
In [543]: timeit x[None,50,:] # **best**
1000000 loops, best of 3: 1.76 µs per loop
Một thử nghiệm cho bản sao là so sánh con trỏ bộ đệm dữ liệu với bản gốc.
In [492]: x.__array_interface__['data']
Out[492]: (175920456, False)
In [493]: x[50,:].__array_interface__['data']
Out[493]: (175940456, False)
In [494]: x[[50],:].__array_interface__['data']
Out[494]: (175871672, False) # different pointer
In [495]: x[50:51,:].__array_interface__['data']
Out[495]: (175940456, False)
In [496]: x[50,:][None,:].__array_interface__['data']
Out[496]: (175940456, False)
Bạn có thể cung cấp ví dụ về đầu vào và đầu ra mong muốn không? Bạn có muốn lấy mảng 1D hoặc mảng 2D không? –
Chắc chắn! Giả sử tôi có một mảng như 'np.ones ((2,40))'. Từ mảng này tôi muốn cắt toàn bộ một hàng theo dạng 'np.array ((1,40))'. Kết quả phải là một mảng 2d – neurotronix
Sử dụng np.newaxis hoặc Không để chèn một trục mới –