Ben bir matris xs
adında var:işlemek için bazı zarif bir yolu var mı benim ndarray
array([[1, 1, 1, 1, 1, 0, 1, 0, 0, 2, 1],
[2, 1, 0, 0, 0, 1, 2, 1, 1, 2, 2]])
Şimdi aynı satırda en yakın önceki öğe tarafından sıfırları değiştirmek istiyor (ilk sütun olmalıdır varsayarsak sıfırdan farklı.). aşağıdaki gibi kaba çözelti:
In [55]: row, col = xs.shape
In [56]: for r in xrange(row):
....: for c in xrange(col):
....: if xs[r, c] == 0:
....: xs[r, c] = xs[r, c-1]
....:
In [57]: xs
Out[57]:
array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1],
[2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2]])
bir Yardım büyük takdir edilecektir. adım-adım haddeleme ve ilk dizinin maskeleme dayalı
Çözümünüzün neden zarif olmadığını düşünüyorsunuz? Düşünebildiğim tek gelişme, ikinci sütuntan döngü başlatılmasıdır, çünkü varsayımınız var, size birkaç işlem kazandırır;) –
@jaux Bunu yapmak için bazı ndarray'ın indeksleme sihrini kullanmak istiyorum. Python'da döngü performansı çok iyi değil. – Eastsun