Python 如何将字符串更改为浮点列表和';n';n维列表的定义?

Python 如何将字符串更改为浮点列表和';n';n维列表的定义?,python,string,list,numpy,Python,String,List,Numpy,我有一个类似于这个列表的代码 ['11,2019','12,2019'] 我试着使用numpy,希望能得到结果 array([[[11],[2019]],[[12],[2019]]]) 我试着用numpy重塑代码 arr1= arr.reshpae(-1,1), 但它只显示了这个结果 array([['11,2019'],['12,2019']]) 不将类型、字符串更改为float或int 在列表步骤中,我尝试在开始numpy步骤之前更改类型 import numpy as np a

我有一个类似于这个列表的代码

['11,2019','12,2019']
我试着使用numpy,希望能得到结果

array([[[11],[2019]],[[12],[2019]]])
我试着用numpy重塑代码

arr1= arr.reshpae(-1,1), 
但它只显示了这个结果

array([['11,2019'],['12,2019']])
不将类型、字符串更改为float或int

在列表步骤中,我尝试在开始numpy步骤之前更改类型

import numpy as np

arr1=int(arr)
但它告诉我 TypeError:int()参数必须是字符串、类似于对象的字节或数字,而不是“列表”

我希望通过在numpy中划分每个元素,将一维列表更改为二维列表

['11,2019','12,2019']  ->  array([[[11],[2019]],[[12],[2019]]])

您可以迭代初始列表中的元素,并对每个元素使用split函数,以便将它们转换为1d列表,并将它们添加到输出2d列表中:

import numpy as np

arr1d = ['11,2019','12,2019']
arr2d = [] #create an output list
for el in arr1d:
    #for each element in the 1d list
    #split that element into a 1d array and add to the 2d array
    arr2d.append(el.split(','))
#convert into a numpy array if that's necessary
output = np.array(arr2d)

我给OP做了一个相当重要的注释解决方案。基本上,您可以用逗号拆分
str
项,
将其映射到
int
,将其附加到
列表
,然后将其转换为
numpy
数组

input_list = [ '11,2019', '12,2019' ]

# initialize variable for storing the result
output_list = []

# loop through every item in the input list
for item in input_list:

    # split each item of list by comma
    split_str = item.split( ',' )

    # convert split list of strings to int
    split_int = list( map( int, split_item ) )

    # store result to variable
    output_list.append( split_int )

# convert list to numpy (optional)
output_array = numpy.array( output_list )
试试这个

a=['11,2019','12,2019']
d=np.array(list((map(lambda y:[[int(y.split(',')[0])],[int(y.split(',')[1])]],a))))
print(d)
输出:

[[[  11]
  [2019]]

 [[  12]
  [2019]]]
这里有三个选项(假设您真正指的是2D阵列)

1.最短,但一旦从
numpy
中删除
matrix
类,最终将停止工作:
np.array(np.matrix(';'.join(inp)))
# array([[  11, 2019],
#        [  12, 2019]])
2.这是您应该使用的: 我们使用列表理解在逗号处拆分每个字符串。
np.array
的第二个参数是
dtype
;我们使用它来告诉numpy输入元素(字符串)应该被解释为int

3.这使python能够将字符串解析为int的元组。工作,但有点过度工程。
import ast
np.array([ast.literal_eval(l) for l in inp])
# array([[  11, 2019],
#        [  12, 2019]])
PS:如果你真的想要你键入的内容,你必须在上面加上
[…,None]
,例如:

np.array([l.split(',') for l in inp], int)[..., None]
# array([[[  11],
#         [2019]],
# 
#        [[  12],
#         [2019]]])

int
是一个用于创建一个整数的python函数。。您需要在逗号上拆分这些字符串。您遗漏了几个:)
np.genfromtxt(inp,delimiter=',',dtype=int)
np.stack(np.char.split(inp,,).astype(int)
@hpaulj-Ouch!第二个很讨厌!但是为什么不发布第一个呢?事实上,我认为这是一种“正确”的方式。很好,对noob很友好。但是考虑删除不必要复杂的int转换。让numpy做起来容易多了:
np.array(output\u list,dtype=int)
将在可能的情况下转换为int。
import ast
np.array([ast.literal_eval(l) for l in inp])
# array([[  11, 2019],
#        [  12, 2019]])
np.array([l.split(',') for l in inp], int)[..., None]
# array([[[  11],
#         [2019]],
# 
#        [[  12],
#         [2019]]])