Lọc mảng
Lấy một số yếu tố ra khỏi một mảng hiện có và tạo một mảng mới trong số chúng được gọi là lọc.
Trong Numpy, bạn lọc một mảng bằng danh sách chỉ mục Boolean.
Danh sách chỉ mục Boolean là danh sách các booleans tương ứng với các chỉ mục trong mảng.
Nếu giá trị tại một chỉ mục là
result = [a for a in A if a not in subset_of_A]
1 phần tử đó được chứa trong mảng được lọc, nếu giá trị ở chỉ mục đó là result = [a for a in A if a not in subset_of_A]
2 phần tử đó được loại trừ khỏi mảng được lọc.Thí dụ
Tạo một mảng từ các phần tử trên INDEX 0 và 2:
nhập khẩu NUMPY dưới dạng NP
mảng = np.array [[41, 42, 43, 44]]]
x = [Đúng, Sai, Đúng, Sai]
newarr = mảng [x]
print[newarr]
Hãy tự mình thử »
Ví dụ trên sẽ trả về
result = [a for a in A if a not in subset_of_A]
3, tại sao?Bởi vì mảng mới chỉ chứa các giá trị trong đó mảng bộ lọc có giá trị
result = [a for a in A if a not in subset_of_A]
1, trong trường hợp này là INDEX 0 và 2.Tạo mảng bộ lọc
Trong ví dụ trên, chúng tôi đã mã hóa các giá trị
result = [a for a in A if a not in subset_of_A]
1 và result = [a for a in A if a not in subset_of_A]
2, nhưng việc sử dụng phổ biến là tạo ra một mảng bộ lọc dựa trên các điều kiện.Thí dụ
Tạo một mảng từ các phần tử trên INDEX 0 và 2:
nhập khẩu NUMPY dưới dạng NP
mảng = np.array [[41, 42, 43, 44]]]
x = [Đúng, Sai, Đúng, Sai]
filter_arr = []
newarr = mảng [x]
for element in arr:
# if the element is higher than 42, set the value to True, otherwise False:
if element > 42:
filter_arr.append[True]
else:
filter_arr.append[False]
Hãy tự mình thử »
print[filter_arr]print[newarr]
print[newarr]
Hãy tự mình thử »
Thí dụ
Tạo một mảng từ các phần tử trên INDEX 0 và 2:
nhập khẩu NUMPY dưới dạng NP
mảng = np.array [[41, 42, 43, 44]]]
x = [Đúng, Sai, Đúng, Sai]
filter_arr = []
newarr = mảng [x]
for element in arr:
# if the element is completely divisble by 2, set the value to True, otherwise False
if element % 2 == 0:
filter_arr.append[True]
else:
filter_arr.append[False]
Hãy tự mình thử »
print[filter_arr]print[newarr]
print[newarr]
Hãy tự mình thử »
Ví dụ trên sẽ trả về result = [a for a in A if a not in subset_of_A]
3, tại sao?
result = [a for a in A if a not in subset_of_A]
Bởi vì mảng mới chỉ chứa các giá trị trong đó mảng bộ lọc có giá trị
result = [a for a in A if a not in subset_of_A]
1, trong trường hợp này là INDEX 0 và 2.Tạo mảng bộ lọc
Thí dụ
Tạo một mảng từ các phần tử trên INDEX 0 và 2:
nhập khẩu NUMPY dưới dạng NP
mảng = np.array [[41, 42, 43, 44]]]
x = [Đúng, Sai, Đúng, Sai]
newarr = mảng [x]
print[filter_arr]print[newarr]
print[newarr]
Hãy tự mình thử »
Thí dụ
Tạo một mảng từ các phần tử trên INDEX 0 và 2:
nhập khẩu NUMPY dưới dạng NP
mảng = np.array [[41, 42, 43, 44]]]
x = [Đúng, Sai, Đúng, Sai]
newarr = mảng [x]
print[filter_arr]print[newarr]
print[newarr]
Hãy tự mình thử »
112
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Ví dụ: tôi có hai danh sách
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = [6, 9, 12]; # the subset of A
the result should be [7, 8, 10, 11]; the remaining elements
Có một chức năng tích hợp trong Python để làm điều này?
amindfv
8.3785 Huy hiệu vàng35 Huy hiệu bạc57 Huy hiệu Đồng5 gold badges35 silver badges57 bronze badges
Hỏi ngày 12 tháng 4 năm 2011 lúc 19:40Apr 12, 2011 at 19:40
Nếu đơn đặt hàng không quan trọng, bạn nên sử dụng
result = [a for a in A if a not in subset_of_A]
7. Tuy nhiên, nếu bạn muốn giữ lại thứ tự, một danh sách đơn giản là tất cả những gì nó cần.result = [a for a in A if a not in subset_of_A]
EDIT: Như Delnan nói, hiệu suất sẽ được cải thiện đáng kể nếu
8 là một result = [a for a in A if a not in subset_of_A]
9 thực tế, vì việc kiểm tra tư cách thành viên trong result = [a for a in A if a not in subset_of_A]
9 là O [1] so với O [N] cho danh sách. As delnan says, performance will be substantially improved if result = [a for a in A if a not in subset_of_A]
result = [a for a in A if a not in subset_of_A]
8 is an actual result = [a for a in A if a not in subset_of_A]
9, since checking for membership in a result = [a for a in A if a not in subset_of_A]
9 is O[1] as compared to O[n] for a list.A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = set[[6, 9, 12]] # the subset of A
result = [a for a in A if a not in subset_of_A]
Đã trả lời ngày 12 tháng 4 năm 2011 lúc 19:45Apr 12, 2011 at 19:45
Chinmay Kanchichinmay KanchiChinmay Kanchi
60.2K22 Huy hiệu vàng86 Huy hiệu bạc113 Huy hiệu đồng22 gold badges86 silver badges113 bronze badges
1
Có, hàm
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = set[[6, 9, 12]] # the subset of A
result = [a for a in A if a not in subset_of_A]
1:filter[lambda x: x not in subset_of_A, A]
Letharion
3.9687 Huy hiệu vàng30 Huy hiệu bạc42 Huy hiệu Đồng7 gold badges30 silver badges42 bronze badges
Đã trả lời ngày 12 tháng 4 năm 2011 lúc 19:42Apr 12, 2011 at 19:42
Carlpettcarlpettcarlpett
11.7K4 Huy hiệu vàng46 Huy hiệu bạc81 Huy hiệu đồng4 gold badges46 silver badges81 bronze badges
2
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = set[[6, 9, 12]] # the subset of A
result = [a for a in A if a not in subset_of_A]
2 cung cấp cho bộ kết quả dự định của bạn, nhưng nó sẽ không giữ lại thứ tự ban đầu. Sau đây là bảo quản đơn hàng: [a for a in A if not a in subset_of_A]
Đã trả lời ngày 12 tháng 4 năm 2011 lúc 19:43Apr 12, 2011 at 19:43
Alexander Gessleralexander GesslerAlexander Gessler
44,7K6 Huy hiệu vàng80 Huy hiệu bạc122 Huy hiệu đồng6 gold badges80 silver badges122 bronze badges
1
Không, không có bản dựng trong chức năng trong Python để làm điều này, bởi vì đơn giản là:
set[A]- set[subset_of_A]
sẽ cung cấp cho bạn câu trả lời.
Đã trả lời ngày 12 tháng 4 năm 2011 lúc 19:46Apr 12, 2011 at 19:46
Eateateat
7.3701 Huy hiệu vàng18 Huy hiệu bạc27 Huy hiệu đồng1 gold badge18 silver badges27 bronze badges
2
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = set[[6, 9, 12]] # the subset of A
result = [a for a in A if a not in subset_of_A]
3Đã trả lời ngày 12 tháng 4 năm 2011 lúc 19:43Apr 12, 2011 at 19:43
Alexander Gessleralexander GesslerNPE
44,7K6 Huy hiệu vàng80 Huy hiệu bạc122 Huy hiệu đồng104 gold badges925 silver badges999 bronze badges
0
Không, không có bản dựng trong chức năng trong Python để làm điều này, bởi vì đơn giản là:
set[A].difference[subset_of_A]
Đã trả lời ngày 12 tháng 4 năm 2011 lúc 19:42Apr 12, 2011 at 19:42
CarlpettcarlpettJoshAdel
11.7K4 Huy hiệu vàng46 Huy hiệu bạc81 Huy hiệu đồng24 gold badges139 silver badges136 bronze badges
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = set[[6, 9, 12]] # the subset of A
result = [a for a in A if a not in subset_of_A]
2 cung cấp cho bộ kết quả dự định của bạn, nhưng nó sẽ không giữ lại thứ tự ban đầu. Sau đây là bảo quản đơn hàng:>>> A = [6, 7, 8, 9, 10, 11, 12]
>>> subset_of_A = set[[6, 9, 12]]
>>> [i for i in A if i not in subset_of_A]
[7, 8, 10, 11]
[a for a in A if not a in subset_of_A]
Đã trả lời ngày 12 tháng 4 năm 2011 lúc 19:43
Đã trả lời ngày 12 tháng 4 năm 2011 lúc 19:43Apr 12, 2011 at 19:43
Alexander Gessleralexander GesslerFelix Kling
44,7K6 Huy hiệu vàng80 Huy hiệu bạc122 Huy hiệu đồng172 gold badges1069 silver badges1116 bronze badges
Không, không có bản dựng trong chức năng trong Python để làm điều này, bởi vì đơn giản là:
A_set = Set[[6,7,8,9,10,11,12]]
subset_of_A_set = Set[[6,9,12]]
result = A_set - subset_of_A_set
Đã trả lời ngày 12 tháng 4 năm 2011 lúc 19:43Apr 12, 2011 at 19:43
Alexander Gessleralexander GesslerPlatinum Azure
44,7K6 Huy hiệu vàng80 Huy hiệu bạc122 Huy hiệu đồng11 gold badges106 silver badges133 bronze badges
>>> a = set[[6, 7, 8, 9, 10, 11, 12]]
>>> sub_a = set[[6, 9, 12]]
>>> a - sub_a
set[[8, 10, 11, 7]]
Đã trả lời ngày 12 tháng 4 năm 2011 lúc 19:43Apr 12, 2011 at 19:43
Alexander Gessleralexander GesslerJake
44,7K6 Huy hiệu vàng80 Huy hiệu bạc122 Huy hiệu đồng5 gold badges26 silver badges41 bronze badges
result = [a for a in A if a not in subset_of_A]
0Không, không có bản dựng trong chức năng trong Python để làm điều này, bởi vì đơn giản là:Apr 12, 2011 at 19:45