Python中有一個非常大的二維數組,使用numpy
庫。我想要有效地遍歷每一列,並且每次檢查元素是否與0不同以在每列中計算它們的數量。在Python中高效地遍歷numpy矩陣中的每一列
假設我有以下矩陣。
M = array([[1,2], [3,4]])
下面的代碼,使我們的每一行有效地行走,例如(這是不是我打算做當然!):
for row_idx, row in enumerate(M):
print "row_idx", row_idx, "row", row
for col_idx, element in enumerate(row):
print "col_idx", col_idx, "element", element
# update the matrix M: square each element
M[row_idx, col_idx] = element ** 2
然而,在我來說,我想因爲我有一個非常大的矩陣,所以可以有效地遍歷每列。
我聽說有實現這個使用numpy的一個非常有效的方式,而不是我當前的代碼:提前
curr_col, curr_row = 0, 0
while (curr_col < numb_colonnes):
result = 0
while (curr_row < numb_rows):
# If different from 0
if (M[curr_row][curr_col] != 0):
result += 1
curr_row += 1
.... using result value ...
curr_col += 1
curr_row = 0
謝謝!
您需要清洗縮進。 – hpaulj 2015-02-17 22:26:57
重新您的第一個代碼塊,它可以由單個語句代替'M = M * M' – gboffi 2015-02-17 22:32:07
縮進更正,謝謝 – Othmane 2015-02-17 22:44:12