我有一個 for 回圈,它根據年齡和狀態將客戶資料乘以陣列串列。回圈有效,但我需要按客戶拆分輸出結果以進行下一次計算,任何想法如何做到這一點每個客戶輸出的長度根據年齡而有所不同。示例客戶 us111 的輸出大小為(12、10、10 ),并且客戶 us112 的輸出大小為 (11,10,10)
split=np.random.rand(15, 10, 10)
age = [3,4,9]
customers = np.array([
[0,1000,0,0,0,0,0,0,0,0],
[0,0,0,4890,0,0,0,0,0,0],
[0,0,0,0,624,0,0,0,0,0],
])
results = []
for c, y in zip(customers, age):
for m in split[y:]:
c = c @ m
results.append(c)
results = np.stack(results)
對于此示例 split 是大小為 (15,10,10) 的陣列串列,其中年齡由每個矩陣示例表示 split[0]= age 1 , split[1] =2 依此類推,直到達到 15 歲。對于這種情況,矩陣有 10 個狀態 (AJ)。
客戶資料如下:
user_id | current_state | age | amount
us111 | B | 3 | 1000
us112 | D | 4 | 4890
us113 | E | 9 | 624
該回圈將每個用戶的資料按其當前狀態示例的順序放置us111= np.array([0,1000,0,0,0,0,0,0,0,0])
然后乘以從客戶年齡到 15 歲的矩陣。
回圈的當前輸出將每個客戶結果附加到彼此下方,但我需要在每個陣列旁邊添加他們的 user_id,它也可以在資料框中,不必在陣列中。
uj5u.com熱心網友回復:
也許你可以在字典中將它分開來改變回圈:
results_dict = {}
for _id, c, y in zip(user_id ,customers, age):
results = []
for m in split[y:]:
c = c @ m
results.append(c)
results_dict[_id] = results
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/446346.html
上一篇:“新”運算子中的for回圈
下一篇:有誰知道為什么這是無限回圈?
