我有三個串列(實際上是 Pandas 資料框中的列),一個包含感興趣的資料,一個包含 x 陣列坐標,另一個包含 y 陣列坐標。所有串列的長度和它們在與坐標關聯的串列中的順序相同(因此 L1:“Apple”與 L2:“1”和 L3:“A”重合)。我想用資料串列中的資料制作一個具有兩個坐標串列提供的維度的陣列。做這個的最好方式是什么?
預期的輸出將采用 numpy 陣列或類似的形式:
array = [[0,0,0,3,0,0,2,3][0,0,0,0,0,0,0,3]] #databased on below
在此示例中,陣列的維度為 y = 2 fromy.unique()和 x = 8 from x.unique()。
以下是我正在談論的示例輸入資料:
| 陣列_x | 陣列_y | 資料 |
|---|---|---|
| 1 | 一個 | 0 |
| 2 | 一個 | 0 |
| 3 | 一個 | 0 |
| 4 | 一個 | 3 |
| 5 | 一個 | 0 |
| 6 | 一個 | 0 |
| 7 | 一個 | 2 |
| 8 | 一個 | 3 |
| 1 | 乙 | 0 |
| 2 | 乙 | 0 |
| 3 | 乙 | 0 |
| 4 | 乙 | 0 |
| 5 | 乙 | 0 |
| 6 | 乙 | 0 |
| 7 | 乙 | 0 |
| 8 | 乙 | 3 |
uj5u.com熱心網友回復:
您可能正在尋找pivot:
out = df.pivot(values=['Data'], columns=['array_y'], index=['array_x']).to_numpy()
輸出:
array([[0, 0],
[0, 0],
[0, 0],
[3, 0],
[0, 0],
[0, 0],
[2, 0],
[3, 3]], dtype=int64)
uj5u.com熱心網友回復:
假設你有一個這樣的資料框:
import pandas as pd
import numpy as np
myDataframe = pd.DataFrame([[1,2],[3,4],[5,6]], columns=['x','y'])
然后你可以選擇你想要的列并從中創建一個陣列
my_array = np.array(myDataframe[['x','y']])
>>> my_array
array([[1, 2],
[3, 4],
[5, 6]], dtype=int64)
uj5u.com熱心網友回復:
你可以做一個zip(注意:我正在速記你的一些示例資料):
data_x = [1, 2, 3, 4, 5, 6, 7, 8] * 2
data_y = ['a'] * 8 ['b'] * 8
data_vals = [0,0,0,3,0,0,2,3,0,0,0,0,0,0,0,3]
coll = dict()
for (x, y, val) in zip(data_x, data_y, data_vals):
if coll.get(y) is None:
coll[y] = []
if x > len(coll[y]):
coll[y].extend([0] * (x - len(coll[y])))
coll[y][x - 1] = val
result = []
for k in sorted(coll):
result.append(coll[k])
print coll
print result
輸出:
{'a': [0, 0, 0, 3, 0, 0, 2, 3], 'b': [0, 0, 0, 0, 0, 0, 0, 3]}
[[0, 0, 0, 3, 0, 0, 2, 3], [0, 0, 0, 0, 0, 0, 0, 3]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/380723.html
