AttributeError: 'numpy.ndarray' object has no attribute 'arange'
时间: 2023-06-22 12:19:19 浏览: 126
很抱歉,这是我的疏忽,`arange`函数是`numpy`模块的函数,不能用于`ndarray`对象。您可以修改代码如下:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取表格数据
df = pd.read_excel('your_file_path.xlsx')
# 将nan值设为0,方便后面绘图
df = df.fillna(0)
# 转换为numpy数组
data = df.to_numpy()
# 设定黑色为nan值的颜色
cmap = plt.get_cmap('gist_gray')
cmap.set_bad(color='black')
# 绘制格网图
plt.imshow(data, cmap=cmap, interpolation='nearest')
plt.colorbar()
# 设定横纵坐标
plt.xticks(np.arange(0, data.shape[1], 30))
plt.yticks(np.arange(0, data.shape[0], 30))
# 显示图像
plt.show()
```
现在使用`data.shape`来获取数组的形状,从而设定坐标的范围。
相关问题
AttributeError: 'numpy.ndarray' object has no attribute 'columns'
This error occurs because the `numpy.ndarray` object doesn't have a `columns` attribute. The `columns` attribute belongs to a Pandas DataFrame object.
To solve this error, you can convert the `numpy.ndarray` object to a Pandas DataFrame object using the `pandas.DataFrame()` function. Then, you can access the `columns` attribute.
Example:
```
import pandas as pd
import numpy as np
# create a numpy array
arr = np.array([[1, 2, 3], [4, 5, 6]])
# convert the numpy array to a pandas DataFrame
df = pd.DataFrame(arr)
# access the columns attribute
print(df.columns)
```
Output:
```
RangeIndex(start=0, stop=3, step=1)
```
AttributeError: 'numpy.ndarray' object has no attribute 'append'
这个错误提示说明你在尝试使用numpy数组的`append`方法,但是numpy数组并没有这个方法。numpy数组的维度是固定的,一旦创建就不能再添加或删除元素。
如果你需要在数组末尾添加元素,可以使用numpy的`concatenate`函数或`stack`函数来实现。具体使用方法如下:
1. 使用`concatenate`函数将两个数组拼接:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.concatenate([a, b])
```
这里将数组a和b拼接成一个新的数组c。
2. 使用`stack`函数将两个数组堆叠:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.stack([a, b])
```
这里将数组a和b沿着新的轴(默认为0)堆叠成一个新的二维数组c。
如果你需要在循环中动态添加元素,建议使用Python的列表(list)来代替numpy数组。列表具有动态大小,可以通过`append`方法来添加元素。如果最终需要将列表转换为numpy数组,可以使用`np.array`函数来实现。
```python
import numpy as np
my_list = []
for i in range(10):
my_list.append(i)
my_array = np.array(my_list)
```
这里将0到9的整数添加到列表中,然后使用`np.array`函数将列表转换为numpy数组。