【发布时间】:2016-03-07 02:33:05
【问题描述】:
我在更新数据结构时遇到了一些问题,不知道为什么。
我有这个数据结构:
USER_EVENT_PAIR_NUMPY_DATA_TYPE = numpy.dtype([('user_id', numpy.int64, 1), ('dated_id', numpy.int64, 1),
('preference_value', numpy.float64, 1),
('weighted_preference_value', numpy.float64, 1),
('date_type', numpy.int8, 1),
('user_rating', numpy.int8, 1),
('pair_met_at_event_round_num', numpy.int16, 1),
('match_type', numpy.int8, 1)])
我创建了一个数组:
arr = numpy.empty([0,1],dtype=USER_EVENT_PAIR_NUMPY_DATA_TYPE)
我会定期向其中添加行:
row = numpy.array([(dater1.get_user_key, #User1ID
dater2.get_user_key, #User2ID
Dater1PreferenceVal, #Initial preference value
0.0, #Weighted preference value
DateType, # Date type
0, # User rating
-1, # Pair met at event round
0)], # Match type
dtype=USER_EVENT_PAIR_NUMPY_DATA_TYPE)
eupm = numpy.row_stack((eupm, row))
然后,稍后,我想修改特定用户对的值(user_id 和 dated_id 的组合)。但是,当我这样做时,它不会更改数组中的值。如果我在这个 set 语句之前和之后打印数组中的值,它是相同的。它正在成功地从数组中读取现有值。我错过了什么?
eupm[(eupm[:]['user_id'] == user1.get_user_key) & (eupm[:]['dated_id'] == user2.get_user_key)][0][2] = PreferenceVal
谢谢!
【问题讨论】:
-
能否提供代码也可能是您的代码有问题?
-
代码在那里,但很难阅读,也很难剪切和粘贴。
标签: arrays python-2.7 numpy data-structures