我是新來的Python和Numpy,我面臨一個問題,我不能修改numpy.recarray,當應用到蒙面的意見。我從文件中讀取數據庫,然後創建兩個屏蔽的視圖,然後嘗試修改for循環中的值。這是一個示例代碼。如何修改一個NumPy.recarray使用其兩個視圖
import numpy as np
import matplotlib.mlab as mlab
dat = mlab.csv2rec(args[0], delimiter=' ')
m_Obsr = dat.is_observed == 1
m_ZeroScale = dat[m_Obsr].scale_mean < 0.01
for d in dat[m_Obsr][m_ZeroScale]:
d.scale_mean = 1.0
但是,當我打印出結果
newFile = args[0] + ".no-zero-scale"
mlab.rec2csv(dat[m_Obsr][m_ZeroScale], newFile, delimiter=' ')
所有這些文件中的scale_means,仍然是零。
我一定在做錯事。是否有修改 視圖值的正確方法?是因爲我一個一個地應用兩個視圖嗎?
謝謝。
是的,你是對的我沒有意識到我正在做一個高級選擇,而後者返回一個臨時副本。而我對「蒙面觀點」的理解確實很模糊。 謝謝你的報價。我之前正在閱讀同一部分3,但沒有看到這個§。您的修復程序將起作用 雖然我的問題是否可以修改dat中的原始數據,而不需要複製數組的一部分。我需要保留原始的順序,而只修改子集。 簡單的迭代方法會起作用嗎?還是有更好的? – 2009-06-28 16:41:29