python - 如何替换二维列表数组中所有出现的项目
问题描述
我有这个 python 列表数组:
yards = [['85', '110', '90', '130', '115', '105', '95', '87', '85'], ['-', '90', '-', '-', '-', '-', '-', '-', '-'], ['-', '-', '-', '-', '-', '-', '-', '-', '-'], ['-', '-', '-', '-', '-', '-', '-', '-', '-']]
但我想用零(0)替换所有'-'。
yards = [[85, 110, 90, 130, 115, 105, 95, 87, 85], [0, 90, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]]
下面的代码不能正常工作,因为它没有循环所有元素,只有定义为码 [1] 的元素。如何使任何大小的带有元素('-')的二维列表数组变为零?
print(len(yards))
numeric_types = [str]
yards = [x for x in yards[1] if type(x) in numeric_types]
print(yards)
for i in range(len(yards)):
if yards[i] == '-':
yards[i] = 0
print(yards) # output of the changed list
4
['-', '90', '-', '-', '-', '-', '-', '-', '-']
[0, '90', 0, 0, 0, 0, 0, 0, 0]
解决方案
转换为 numpy:
import numpy as np
yards = [['85', '110', '90', '130', '115', '105', '95', '87', '85'], ['-', '90', '-', '-', '-', '-', '-', '-', '-'], ['-', '-', '-', '-', '-', '-', '-', '-', '-'], ['-', '-', '-', '-', '-', '-', '-', '-', '-']]
arr = np.array(yards)
然后要将所有出现的“-”设置为 0,请执行以下操作:
arr[arr == '-'] = 0
推荐阅读
- python - 如何在熊猫数据框中将“19”添加到 69?
- c++ - 接受特征密集矩阵和稀疏矩阵的函数
- micronaut - HttpClientResponseException:空体
- django - Django:按顺序过滤产品的问题
- javascript - HTML:无法使用 Tab 键访问链接
- arrays - 如何在Matlab中找到单元格(向量案例)的索引
- javascript - 如何用 sinon 模拟 d3.select.selectall?
- python - 如何修复'TypeError:float()参数必须是字符串或数字,而不是'map''
- php - 数学计算 laravel (netto-brutto)
- awk - 基于 awk 中特定列的单个输入的多个输出