np.expand_dims là yêu thích của tôi khi tôi muốn thêm trục tùy ý.
Không có hoặc np.newaxis tốt cho mã không cần phải có trục linh hoạt. (Câu trả lời aix của)
>>> np.expand_dims(np.arange(5), 0).shape
(1, 5)
>>> np.expand_dims(np.arange(5), 1).shape
(5, 1)
ví dụ sử dụng: hạ thấp một mảng bằng bất kỳ trục cho
>>> x = np.random.randn(4,5)
>>> x - x.mean(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
>>> ax = 1
>>> x - np.expand_dims(x.mean(ax), ax)
array([[-0.04152658, 0.4229244 , -0.91990969, 0.91270622, -0.37419434],
[ 0.60757566, 1.09020783, -0.87167478, -0.22299015, -0.60311856],
[ 0.60015774, -0.12358954, 0.33523495, -1.1414706 , 0.32966745],
[-1.91919832, 0.28125008, -0.30916116, 1.85416974, 0.09293965]])
>>> ax = 0
>>> x - np.expand_dims(x.mean(ax), ax)
array([[ 0.15469413, 0.01319904, -0.47055919, 0.57007525, -0.22754506],
[ 0.70385617, 0.58054228, -0.52226447, -0.66556131, -0.55640947],
[ 1.05009459, -0.27959876, 1.03830159, -1.23038543, 0.73003287],
[-1.90864489, -0.31414256, -0.04547794, 1.32587149, 0.05392166]])
Để thêm một trục đến cuối của một mảng thứ 2ngày hoặc cao hơn, sử dụng một dấu chấm lửng thay vì một dấu hai chấm: 'a [..., None]' bao gồm nhiều kích thước khi cần thiết. Sau đó, 'a.shape' sẽ đi từ, ví dụ,' (n, m) 'sang' (n, m, 1) '. – askewchan