import pandas as pd import numpy as np import math import matplotlib.pyplot as plt import openpyxl data_train = pd.read_excel(r"D:\北京市空气质量数据train.xlsx") # 获取数据集和每个维度的名称 data_train = data_train.drop(['日期'], axis=1) data_train = data_train.drop(['质量等级'], axis=1) # 把第 1 列 日期 数据去除掉 datasets = data_train.values labels = data_train.columns.values data_train_result = np.array(data_train.iloc[:, [-1]]) train_result = data_train_result print(datasets) print(labels) data_test = pd.read_excel(r"D:\北京市空气质量数据test.xlsx") # 获取数据集和每个维度的名称 data_test_features = data_test.drop(['日期'], axis=1) data_test_features = data_test_features.drop(['质量等级'], axis=1) # 把第 1 列 日期 数据去除掉 datasets_test = data_test_features.values data_test_result = np.array(data_test.iloc[:, [-1]]) test_result = data_test_result print(datasets_test) print(test_result) distance = np.array([len(datasets), len(datasets_test)]) for i in range(len(datasets)): for j in range(len(datasets_test)): su = 0 for m in range(0, 1, 2): n = (datasets[i][m]-datasets_test[j][m]) ** 2 su = su + n distance[i][j] = math.sqrt(su) print(distance)请问这段代码报错TypeError: 'numpy.int32' object does not support item assignment是为什么,该怎么解决
时间: 2024-01-24 20:17:02 浏览: 127
这是因为 distance 数组是使用 np.array() 定义的,而其默认的数据类型是 int32,而你在后面做了 item assignment,即对数组中的某个元素进行赋值操作,这种操作需要使用可变的数据类型,而 int32 不支持可变操作。
解决方法是在定义 distance 数组时指定数据类型为 float64 或者使用列表定义 distance,如下所示:
1. 指定数据类型为 float64:
```python
distance = np.array([len(datasets), len(datasets_test)], dtype=np.float64)
```
2. 使用列表定义 distance:
```python
distance = [[0] * len(datasets_test) for i in range(len(datasets))]
```
以上两种方法都可以避免出现该报错。
相关问题
import yfinance as yf import math import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline
这段代码是导入需要使用的 Python 库,其中包括:
- `yfinance`:用于获取股票数据的 Python 库。
- `math`:包含数学函数的 Python 标准库。
- `numpy`:用于进行科学计算的 Python 库。
- `pandas`:用于数据处理和分析的 Python 库。
- `matplotlib`:用于数据可视化的 Python 库。
`%matplotlib inline` 是 Jupyter Notebook 中的一个魔法命令,用于在 Notebook 中显示 matplotlib 绘图的输出结果。
import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib import math import random
Sorry, I cannot execute this code as it is incomplete and contains errors. Can you please provide the complete code or specify the task you want to achieve?
阅读全文