最佳地从numpy数组中检索大于阈值的值
Retrieve value larger than a threshold value from numpy array optimally
我正在使用 python 3.x。我有一个形状为 (29982,29982) 的 numpy 数组和一个形状为 29982 的列表。样本数组看起来像
array([[1,5,7,2,9...],
[2,6,4,1,5...],
[7,9,1,12,4...],
...
...
[6,8,13,2,4...]])
示例列表看起来像
['John','David','Josua',......,'Martin']
我想得到一个 pandas 数据框组合这个数组和列表,这样数组值应该大于 5。数据框应该看起来像
'John' 'David' 'Josua'
'John' 0 0 7
'David' 0 6 0
'Josua' 7 9 0
....
'Martin' 6 8 13
你能建议我该怎么做吗?
只需使用 pd.DataFrame
从数组创建数据框,将您的列表作为 index
和 columns
传递。然后使用 df.where
只保留大于 5 的值:
arr = [...]
lst = ['John','David','Josua',...,'Martin']
df = pd.DataFrame(arr, index=lst, columns=lst)
df = df.where(df > 5, 0)
你可以尝试numpy.ma.masked_where
在numpy数组上处理
arr = np.array([[1,5,7,2,],
[2,6,4,1,],
[7,9,1,12],
[6,8,13,2]])
lst = ['John','David','Josua', 'Martin']
df = pd.DataFrame(np.ma.masked_where(arr<=5, arr).filled(0), index=lst, columns=lst)
print(df)
John David Josua Martin
John 0 0 7 0
David 0 6 0 0
Josua 7 9 0 12
Martin 6 8 13 0
我正在使用 python 3.x。我有一个形状为 (29982,29982) 的 numpy 数组和一个形状为 29982 的列表。样本数组看起来像
array([[1,5,7,2,9...],
[2,6,4,1,5...],
[7,9,1,12,4...],
...
...
[6,8,13,2,4...]])
示例列表看起来像
['John','David','Josua',......,'Martin']
我想得到一个 pandas 数据框组合这个数组和列表,这样数组值应该大于 5。数据框应该看起来像
'John' 'David' 'Josua'
'John' 0 0 7
'David' 0 6 0
'Josua' 7 9 0
....
'Martin' 6 8 13
你能建议我该怎么做吗?
只需使用 pd.DataFrame
从数组创建数据框,将您的列表作为 index
和 columns
传递。然后使用 df.where
只保留大于 5 的值:
arr = [...]
lst = ['John','David','Josua',...,'Martin']
df = pd.DataFrame(arr, index=lst, columns=lst)
df = df.where(df > 5, 0)
你可以尝试numpy.ma.masked_where
在numpy数组上处理
arr = np.array([[1,5,7,2,],
[2,6,4,1,],
[7,9,1,12],
[6,8,13,2]])
lst = ['John','David','Josua', 'Martin']
df = pd.DataFrame(np.ma.masked_where(arr<=5, arr).filled(0), index=lst, columns=lst)
print(df)
John David Josua Martin
John 0 0 7 0
David 0 6 0 0
Josua 7 9 0 12
Martin 6 8 13 0