我有这样的代码,
['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]]])
答案 0 :(得分:2)
我为OP考虑了一个相当受好评的解决方案。基本上,您用逗号split
str
项,map
到int
,将其附加到list
,然后将其转换为{{ 1}}数组。
numpy
答案 1 :(得分:0)
您可以仅遍历初始列表的元素并在每个元素上使用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)
答案 2 :(得分:0)
尝试一下。
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]]]
答案 3 :(得分:0)
这里有三个选项(假设您的意思是2D数组)。
inp = ['11,2019','12,2019']
1.最短,但是一旦从matrix
中删除了numpy
类,最终将停止工作:
np.array(np.matrix(';'.join(inp)))
# array([[ 11, 2019],
# [ 12, 2019]])
np.array([l.split(',') for l in inp], int)
# array([[ 11, 2019],
# [ 12, 2019]])
我们使用列表推导在逗号处分割每个字符串。 np.array
的第二个参数是dtype
;我们用它来告诉numpy,输入元素(字符串)应解释为整数。
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]]])