在Python中将列表列表转换为数组类型
我有一个这样的矩阵,想把它转换成数组进行处理。怎么做在Python中将列表列表转换为数组类型,python,numpy,numpy-ndarray,mlxtend,Python,Numpy,Numpy Ndarray,Mlxtend,我有一个这样的矩阵,想把它转换成数组进行处理。怎么做 [[25 3 0 1 0 2 1] [ 1 21 0 0 0 0 0] [ 0 3 18 0 0 0 0] [ 1 0 0 35 2 0 0] [ 0 0 0 4 27 2 0] [ 0 0 0 0 1 27 0] [ 1 1 0 0 0 0 34]] 我知道它应该是这样的形式 [[25, 3, 0, 1, 0, 2, 1], [ 1, 21,
[[25 3 0 1 0 2 1]
[ 1 21 0 0 0 0 0]
[ 0 3 18 0 0 0 0]
[ 1 0 0 35 2 0 0]
[ 0 0 0 4 27 2 0]
[ 0 0 0 0 1 27 0]
[ 1 1 0 0 0 0 34]]
我知道它应该是这样的形式
[[25, 3, 0, 1, 0, 2, 1],
[ 1, 21, 0, 0, 0, 0, 0],
[ 0, 3, 18, 0, 0, 0, 0],
[ 1, 0, 0, 35, 2, 0, 0],
[ 0, 0, 0, 4, 27, 2, 0],
[ 0, 0, 0, 0, 1, 27, 0],
[ 1, 1, 0, 0, 0, 0, 34]]
通常我要做的是手动将数组转换为上述形式并调用
class = np.array([[28, 3, 0, 0, 5, 2, 1],
[ 6, 25 , 0, 2, 2, 8, 0],
[ 0 , 1 ,51 , 0, 0, 0, 0],
[ 5 , 2 , 0 ,25, 12, 2, 2],
[ 1 , 0 , 0, 2, 40, 6, 0],
[ 0 , 0 , 0 ,0, 1, 48, 0],
[ 2 , 1, 0 ,0 , 1, 1, 51]])
假设矩阵存储在字符串上,且始终为整数,则可以执行以下操作:
重新导入
将numpy作为np导入
“我的清单=”“”
[[25 3 0 1 0 2 1]
[ 1 21 0 0 0 0 0]
[ 0 3 18 0 0 0 0]
[ 1 0 0 35 2 0 0]
[ 0 0 0 4 27 2 0]
[ 0 0 0 0 1 27 0]
[ 1 1 0 0 0 0 34]]
"""
行=[]
对于过滤器中的行(len,map(str.strip,my_list.split(“\n”)):
行.append([int(v)代表re.findall中的v(r“\b[0-9]+\b”,行)])
np_行=np.数组(行)
那么,
>>np\u行
数组([[25,3,0,1,0,2,1],
[ 1, 21, 0, 0, 0, 0, 0],
[ 0, 3, 18, 0, 0, 0, 0],
[ 1, 0, 0, 35, 2, 0, 0],
[ 0, 0, 0, 4, 27, 2, 0],
[ 0, 0, 0, 0, 1, 27, 0],
[ 1, 1, 0, 0, 0, 0, 34]])
我不确定导入矩阵时使用的格式,这里是基于字符串的矩阵的解决方案
from ast import literal_eval
s = '''
[[25 3 0 1 0 2 1]
[ 1 21 0 0 0 0 0]
[ 0 3 18 0 0 0 0]
[ 1 0 0 35 2 0 0]
[ 0 0 0 4 27 2 0]
[ 0 0 0 0 1 27 0]
[ 1 1 0 0 0 0 34]]
'''
s = s.replace(" [","[").replace("[ ","[")
s = ", ".join(s.split())
ast.literal_eval(s)
# Out[12]:
# [[25, 3, 0, 1, 0, 2, 1],
# [1, 21, 0, 0, 0, 0, 0],
# [0, 3, 18, 0, 0, 0, 0],
# [1, 0, 0, 35, 2, 0, 0],
# [0, 0, 0, 4, 27, 2, 0],
# [0, 0, 0, 0, 1, 27, 0],
# [1, 1, 0, 0, 0, 0, 34]]
或者在一行中:
ast.literal_eval(", ".join(s.replace(" [","[").replace("[ ","[").split()))
此列表是否以字符串形式存储在变量中?矩阵来自何处?它是哪种格式?如果要将其复制到python中,则该语法无效。@user567879是否从文件中读取矩阵?中间带逗号的块是列表列表列表,最后的
np.array
会正确转换它。第一个块看起来像数组的str
显示,一个多行字符串(但没有引号)。@Marco Yes它作为字符串存储在变量中