Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mewajarkan Elemen Bukan Sifar Array NumPy dengan Cekap?
Menjustifikasikan elemen bukan sifar kepada bahagian tertentu (selalunya berguna dalam carian) ialah operasi biasa, yang boleh dilakukan secara terus untuk tatasusunan NumPy. Begini caranya -
import numpy as np def justify(a, invalid_val=0, axis=1, side='left'): """ Justifies a 2D array Parameters ---------- A : ndarray Input array to be justified axis : int Axis along which justification is to be made side : str Direction of justification. It could be 'left', 'right', 'up', 'down' It should be 'left' or 'right' for axis=1 and 'up' or 'down' for axis=0. """ if invalid_val is np.nan: mask = ~np.isnan(a) else: mask = a!=invalid_val justified_mask = np.sort(mask,axis=axis) if (side=='up') | (side=='left'): justified_mask = np.flip(justified_mask,axis=axis) out = np.full(a.shape, invalid_val) if axis==1: out[justified_mask] = a[mask] else: out.T[justified_mask.T] = a.T[mask.T] return out
Coretan di atas boleh mewajarkan tatasusunan 2D di sepanjang paksi yang dipilih dalam mana-mana empat arah yang mungkin -
# sample input array a = np.array([[1, 0, 2, 0], [3, 0, 4, 0], [5, 0, 6, 0], [0, 7, 0, 8]]) # shift to left print(justify(a, axis=0, side='up')) # shift to down print(justify(a, axis=0, side='down')) # shift to left print(justify(a, axis=1, side='left')) # shift to right print(justify(a, axis=1, side='right'))
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mewajarkan Elemen Bukan Sifar Array NumPy dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!