إزالة عناصر صفيف في بيثون في حين تتبع موقفهم

StackOverflow https://stackoverflow.com/questions/1624395

  •  06-07-2019
  •  | 
  •  

سؤال

وI'v حصلت على اثنين من صفائف نمباي. مجموعة الأولى تحتوي على بعض الأصفار (والتي يتم توزيعها بشكل عشوائي على طول المصفوفة)، والذي أود أن إزالة.

وبلدي المسألة هي أنني أود أيضا أن إزالة إدخالات للمجموعة الثانية في مواقف المؤشر حيث عناصر مجموعة الأولى هي صفر.

وجئت فقط حتى مع مرهقة جدا للحلقة. هل لديها طريقة "أنيقة" للقيام بذلك؟

وتشك!

هل كانت مفيدة؟

المحلول

هل ما تريد؟ انا مبتدئ نمباي.

In [1]: import numpy as np

In [2]: a = np.array([1,2,0,3,0,4])

In [3]: b = np.array([1,2,3,4,5,6])

In [4]: b[np.where(a)]  
Out[4]: array([1, 2, 4, 6])

In [5]: np.where(a)  
Out[5]: (array([0, 1, 3, 5]),)

In [6]: a[np.where(a)]  
Out[6]: array([1, 2, 3, 4])

نصائح أخرى

ويمكنك استخدام الفهرسة منطقية. س! = 0 يمنحك مجموعة منطقية مع صحيح حيث x! = 0 كاذبة حيث x == 0. إذا كنت مؤشر إما X أو Y مع هذه المجموعة (أي x_nozeros = س [س! = 0]) ثم سوف تحصل فقط العناصر حيث x! = 0. على سبيل المثال:

In [1]: import numpy as np
In [2]: x = np.array([1,2,0,3,0,4])
In [3]: y = np.arange(1,7)
In [4]: indx = x!=0
In [5]: x_nozeros = x[indx]
In [6]: y_nozeros = y[indx]
In [7]: x_nozeros
Out[7]: array([1, 2, 3, 4])
In [8]: y_nozeros
Out[8]: array([1, 2, 4, 6])
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top