You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将字典高效转换为4×4的numpy数组?

嘿,这个需求很常见,确实有更简洁的Pythonic方法来实现,不用手动逐个遍历元素。下面给你两种实用的方案,用Numpy或者Pandas都能快速搞定:

方法一:纯Numpy实现

这种方法直接用列表推导式提取数据,再转成Numpy数组,步骤简洁高效:

import json
import numpy as np

# 你的原始字符串
dict_str = u'{"column0":{"x":1,"y":0.0,"z":0.0,"w":-1.0}, "column1":{"x":0.0,"y":1,"z":0.0,"w":-1.0}, "column2":{"x":1,"y":1,"z":1.0,"w":-1.0}, "column3":{"x":-1.0,"y":-1.0,"z":-1.0,"w":-1.0} }'

# 1. 将字符串转为Python字典
data_dict = json.loads(dict_str)

# 2. 提取每个column的数值列表(按x、y、z、w的顺序)
# 注意:Python 3.7+字典会保留插入顺序,所以直接取values()即可保证column0到column3的顺序
rows = [list(col.values()) for col in data_dict.values()]

# 3. 转成4×4的Numpy数组
result_arr = np.array(rows)
print(result_arr)

运行后就会得到你期望的数组:

array([[ 1.,  0.,  0., -1.],
       [ 0.,  1.,  0., -1.],
       [ 1.,  1.,  1., -1.],
       [-1., -1., -1., -1.]])

如果你的Python版本低于3.7(字典无序),可以通过排序确保column的顺序:

# 按column的名称排序,保证顺序正确
sorted_cols = sorted(data_dict.items(), key=lambda item: item[0])
rows = [list(col.values()) for _, col in sorted_cols]
result_arr = np.array(rows)
方法二:用Pandas中转再转Numpy

Pandas对这种嵌套字典的结构处理非常友好,适合数据结构更复杂的场景:

import json
import pandas as pd
import numpy as np

dict_str = u'{"column0":{"x":1,"y":0.0,"z":0.0,"w":-1.0}, "column1":{"x":0.0,"y":1,"z":0.0,"w":-1.0}, "column2":{"x":1,"y":1,"z":1.0,"w":-1.0}, "column3":{"x":-1.0,"y":-1.0,"z":-1.0,"w":-1.0} }'
data_dict = json.loads(dict_str)

# 1. 转成DataFrame,此时行是x/y/z/w,列是column0-column3
df = pd.DataFrame(data_dict)

# 2. 转置DataFrame,让column成为行,再转成Numpy数组
result_arr = df.T.to_numpy()
print(result_arr)

这种方法的优势是如果后续需要对数据做清洗、筛选等操作,Pandas能提供更多便捷工具,一步到位完成格式转换。

内容的提问来源于stack exchange,提问作者Pavan K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:27:09