将矩阵从字符串转换为整数
Convert a matrix from string to integer
我正在尝试将数字矩阵从字符串更改为整数,但它不起作用。
for element in list:
for i in element:
i = int(i)
我做错了什么?
编辑:
这是完整的代码:
import numpy as np
t_list = []
t_list = np.array(t_list)
list_rains_per_months = [['63', '65', '50', '77', '66', '69'],
['65', '65', '67', '50', '54', '58'],
['77', '73', '80', '83', '89', '100'],
['90', '85', '90', '90', '84', '90'],
['129', '113', '120', '135', '117', '130'],
['99', '116', '114', '111', '119', '100'],
['105', '98', '112', '113', '102', '100'],
['131', '120', '111', '141', '130', '126'],
['85', '101', '88', '89', '94', '91'],
['122', '103', '119', '98', '101', '107'],
['121', '101', '104', '121', '115', '104'],
['67', '44', '58', '61', '64', '58']]
for element in t_list:
for i in element:
i = int(i)
对于任何错误,我深表歉意,我是新手 python
在 numpy 中你就是这样做的。
import numpy as np
list_rains_per_months = [['63', '65', '50', '77', '66', '69'],
['65', '65', '67', '50', '54', '58'],
['77', '73', '80', '83', '89', '100'],
['90', '85', '90', '90', '84', '90'],
['129', '113', '120', '135', '117', '130'],
['99', '116', '114', '111', '119', '100'],
['105', '98', '112', '113', '102', '100'],
['131', '120', '111', '141', '130', '126'],
['85', '101', '88', '89', '94', '91'],
['122', '103', '119', '98', '101', '107'],
['121', '101', '104', '121', '115', '104'],
['67', '44', '58', '61', '64', '58']]
list_rains_per_months = np.array(list_rains_per_months)
myfunc = np.vectorize(lambda x: int(x))
list_rains_per_months = myfunc(list_rains_per_months)
print(list_rains_per_months)
输出
[[ 63 65 50 77 66 69]
[ 65 65 67 50 54 58]
[ 77 73 80 83 89 100]
[ 90 85 90 90 84 90]
[129 113 120 135 117 130]
[ 99 116 114 111 119 100]
[105 98 112 113 102 100]
[131 120 111 141 130 126]
[ 85 101 88 89 94 91]
[122 103 119 98 101 107]
[121 101 104 121 115 104]
[ 67 44 58 61 64 58]]
你做错了什么,你没有改变列表或任何列表元素:循环内的 'i' 首先指向列表的每个元素,然后你指向到别的东西,但这不会影响你的列表(另外,避免使用 'list' 作为标识符,它是一个现有的类型,这是自找麻烦)。
一种方法是使用列表理解。假设您的矩阵是(内部)列表的列表,例如:
a_list = [["3", "56", "78"], ["2", "39", "60"], ["87", "9", "71"]]
那么两个嵌套的列表理解应该可以解决问题:
a_list = [[int(i) for i in inner_list] for inner_list in a_list]
这将构建一个新列表,通过遍历您的初始列表,应用您想要的更改,和将其保存到另一个(或相同的)列表。
您可以在循环中使用枚举对象:
list = [["12", "10", "0"],
["0", "33", "60"]]
for h, i in enumerate(list):
for j, k in enumerate(i):
list[h][j] = int(k)
print(list)
也可以只是 map
每行的值 int
:
for row in list_rains_per_months:
row[:] = map(int, row)
请注意,我分配给 row[:]
,即 进入 行,从而进入矩阵。如果我改为分配给 row
,我会遇到与您的 i
相同的问题:我只会分配给变量,而不分配给 row/matrix.
我正在尝试将数字矩阵从字符串更改为整数,但它不起作用。
for element in list:
for i in element:
i = int(i)
我做错了什么?
编辑: 这是完整的代码:
import numpy as np
t_list = []
t_list = np.array(t_list)
list_rains_per_months = [['63', '65', '50', '77', '66', '69'],
['65', '65', '67', '50', '54', '58'],
['77', '73', '80', '83', '89', '100'],
['90', '85', '90', '90', '84', '90'],
['129', '113', '120', '135', '117', '130'],
['99', '116', '114', '111', '119', '100'],
['105', '98', '112', '113', '102', '100'],
['131', '120', '111', '141', '130', '126'],
['85', '101', '88', '89', '94', '91'],
['122', '103', '119', '98', '101', '107'],
['121', '101', '104', '121', '115', '104'],
['67', '44', '58', '61', '64', '58']]
for element in t_list:
for i in element:
i = int(i)
对于任何错误,我深表歉意,我是新手 python
在 numpy 中你就是这样做的。
import numpy as np
list_rains_per_months = [['63', '65', '50', '77', '66', '69'],
['65', '65', '67', '50', '54', '58'],
['77', '73', '80', '83', '89', '100'],
['90', '85', '90', '90', '84', '90'],
['129', '113', '120', '135', '117', '130'],
['99', '116', '114', '111', '119', '100'],
['105', '98', '112', '113', '102', '100'],
['131', '120', '111', '141', '130', '126'],
['85', '101', '88', '89', '94', '91'],
['122', '103', '119', '98', '101', '107'],
['121', '101', '104', '121', '115', '104'],
['67', '44', '58', '61', '64', '58']]
list_rains_per_months = np.array(list_rains_per_months)
myfunc = np.vectorize(lambda x: int(x))
list_rains_per_months = myfunc(list_rains_per_months)
print(list_rains_per_months)
输出
[[ 63 65 50 77 66 69]
[ 65 65 67 50 54 58]
[ 77 73 80 83 89 100]
[ 90 85 90 90 84 90]
[129 113 120 135 117 130]
[ 99 116 114 111 119 100]
[105 98 112 113 102 100]
[131 120 111 141 130 126]
[ 85 101 88 89 94 91]
[122 103 119 98 101 107]
[121 101 104 121 115 104]
[ 67 44 58 61 64 58]]
你做错了什么,你没有改变列表或任何列表元素:循环内的 'i' 首先指向列表的每个元素,然后你指向到别的东西,但这不会影响你的列表(另外,避免使用 'list' 作为标识符,它是一个现有的类型,这是自找麻烦)。
一种方法是使用列表理解。假设您的矩阵是(内部)列表的列表,例如:
a_list = [["3", "56", "78"], ["2", "39", "60"], ["87", "9", "71"]]
那么两个嵌套的列表理解应该可以解决问题:
a_list = [[int(i) for i in inner_list] for inner_list in a_list]
这将构建一个新列表,通过遍历您的初始列表,应用您想要的更改,和将其保存到另一个(或相同的)列表。
您可以在循环中使用枚举对象:
list = [["12", "10", "0"],
["0", "33", "60"]]
for h, i in enumerate(list):
for j, k in enumerate(i):
list[h][j] = int(k)
print(list)
也可以只是 map
每行的值 int
:
for row in list_rains_per_months:
row[:] = map(int, row)
请注意,我分配给 row[:]
,即 进入 行,从而进入矩阵。如果我改为分配给 row
,我会遇到与您的 i
相同的问题:我只会分配给变量,而不分配给 row/matrix.