GVKun编程网logo

Matplotlib 堆叠直方图 numpy.ndarray 错误(python堆叠直方图)

1

如果您对Matplotlib堆叠直方图numpy.ndarray错误感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Matplotlib堆叠直方图numpy.ndarray错

如果您对Matplotlib 堆叠直方图 numpy.ndarray 错误感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Matplotlib 堆叠直方图 numpy.ndarray 错误的详细内容,我们还将为您解答python堆叠直方图的相关问题,并且为您提供关于"ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类、'<=' 在 'numpy.ndarray' 和 'numpy.ndarray' 的实例之间不受支持但 LHS 是 pd.Timestamp、'numpy.ndarray' 对象在 map 函数中不可调用,使用 numpy 数组、Jupyter 中的 Numpy 在打印时出错(Python 版本 3.8.8):TypeError: 'numpy.ndarray' object is not callable的有价值信息。

本文目录一览:

Matplotlib 堆叠直方图 numpy.ndarray 错误(python堆叠直方图)

Matplotlib 堆叠直方图 numpy.ndarray 错误(python堆叠直方图)

如何解决Matplotlib 堆叠直方图 numpy.ndarray 错误

我试图通过循环遍历数据框中的类别并根据字典分配条形颜色来使用 matplotlib 制作堆叠直方图。

我在调用 ax1.hist() 时收到此错误。我该如何解决? AttributeError: ''numpy.ndarray'' object has no attribute ''hist''

可重现的示例

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import matplotlib.gridspec as gridspec
  4. %matplotlib inline
  5. plt.style.use(''seaborn-whitegrid'')
  6. y = [1,5,9,2,4,6,1]
  7. cat = [''A'',''B'',''A'',''B'']
  8. df = pd.DataFrame(list(zip(y,cat)),columns =[''y'',''cat''])
  9. fig,axes = plt.subplots(3,3,figsize=(5,5),constrained_layout=True)
  10. fig.suptitle(''Histograms'')
  11. ax1 = axes[0]
  12. mycolorsdict = {''A'':''magenta'',''B'':''blue''}
  13. for key,batch in df.groupby([''cat'']):
  14. ax1.hist(batch.y,label=key,color=mycolorsdict[key],density=False,cumulative=False,edgecolor=''black'',orientation=''horizontal'',stacked=True)

已更新,仍然无效

这很接近,但不是堆叠(应该在 y=5 处看到堆叠);我想可能是因为循环?

  1. mycolorsdict = {''A'':''magenta'',''B'':''blue''}
  2. for ii,ax in enumerate(axes.flat):
  3. for key,batch in df.groupby([''cat'']):
  4. ax.hist(batch.y,stacked=True)

解决方法

要绘制特定的子图,需要两个索引(行、列),因此 axes[0,0] 用于第一个子图。错误消息来自使用 ax1 = axes[0] 而不是 ax1 = axes[0,0]

现在,要通过 ax.hist() 创建堆叠直方图,需要同时提供所有 y 数据。下面的代码显示了如何从 groupby 的结果开始执行此操作。另请注意,当您的值是离散值时,重要的是明确设置 bin 边界以确保值恰好落在这些边界之间。在两半设置界限是一种方法。

使用 seaborn 的 histplot() 可以大大简化事情。以下是所用参数的细分:

  • data=df 数据框
  • y=''y'' 给出直方图的数据框列。对垂直直方图使用 x=(而不是 y=)。
  • hue=''cat'' 提供数据框列以创建多个组
  • palette=mycolorsdict;调色板定义了着色;分配调色板的方法有很多种,其中之一是 hue 值的字典
  • discrete=True:处理离散数据时,seaborn 设置适当的 bin 边界
  • multiple=''stack'' 根据 hue 类别创建堆叠直方图
  • alpha=1:默认 seaborn 设置 alpha 为 0.75;可选地,这可以改变
  • ax=axes[0,1]:在第 1st 行的第 2nd 个子图上绘制
  1. import pandas as pd
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import seaborn as sns
  5. plt.style.use(''seaborn-whitegrid'')
  6. y = [1,5,9,2,4,6,1]
  7. cat = [''A'',''B'',''A'',''B'']
  8. df = pd.DataFrame({''y'':y,''cat'':cat})
  9. fig,axes = plt.subplots(3,3,figsize=(20,10),constrained_layout=True)
  10. fig.suptitle(''Histograms'')
  11. mycolorsdict = {''A'': ''magenta'',''B'': ''blue''}
  12. groups = df.groupby([''cat''])
  13. axes[0,0].hist([batch.y for _,batch in groups],label=[key for key,_ in groups],color=[mycolorsdict[key] for key,density=False,edgecolor=''black'',cumulative=False,orientation=''horizontal'',stacked=True,bins=np.arange(0.5,10))
  14. axes[0,0].legend()
  15. sns.histplot(data=df,y=''y'',hue=''cat'',palette=mycolorsdict,discrete=True,multiple=''stack'',alpha=1,ax=axes[0,1])
  16. plt.show()

"ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类

如何解决"ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类

我一直在研究用于图像分类的 CNN,但我一直遇到同样的错误,我的数据正在加载到数据帧中,但我无法将其转换为张量以将其输入 CNN。如您所见,我使用此代码将图片加载到数据框中:

  1. for i in range(len(merged)):
  2. full_path = merged.iloc[i][''Image Path Rel'']
  3. filename = full_path[-22:-1] + ''G''
  4. try:
  5. img = img_to_array(load_img(''D:/Serengeti_Data/Compressed/Compressed/'' + filename,target_size=(32,32,3)))
  6. except:
  7. img = np.zeros((32,3),dtype=np.float32)
  8. images = images.append({''Capture Id'' : merged.iloc[i][''Capture Id''],''Image'' : img},ignore_index = True)
  9. else:
  10. images = images.append({''Capture Id'' : merged.iloc[i][''Capture Id''],ignore_index = True)

然后,一旦我使用 load_img()img_to_array() 加载了图像,我进行了重塑以获得所需的 (32,3) 形状。还通过将 Image 列除以 255 来标准化这些值。

然后我这样做是为了尝试将其转换为张量:

  1. train_tf = tf.data.Dataset.from_tensor_slices(images[''Image''])
  2. # Also tried this,but didn''t got the same results:
  3. # train_tf = tf.convert_to_tensor(train_df[''Image''])

但不断收到错误:

ValueError: 无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)

我也尝试跳过它并立即尝试适应我们的模型,但得到了完全相同的错误:

  1. trying_df = pd.DataFrame(images[''Image''])
  2. target_df = pd.DataFrame(targets)
  3. animal_model = models.Sequential()
  4. animal_model.add(layers.Conv2D(30,kernel_size = (3,padding = ''valid'',activation = ''relu'',input_shape =(32,3)))
  5. animal_model.add(layers.MaxPooling2D(pool_size=(1,1)))
  6. animal_model.add(layers.Conv2D(60,kernel_size=(1,1),activation = ''relu''))
  7. animal_model.add(layers.Flatten())
  8. animal_model.add(layers.Dense(100,activation = ''relu''))
  9. animal_model.add(layers.Dense(10,activation = ''softmax''))
  10. ## compiler to model
  11. animal_model.compile(loss = ''categorical_crossentropy'',metrics = [''accuracy''],optimizer =''adam'')
  12. ## training the model
  13. animal_model.fit(trying_df,target_df,batch_size = 128,epochs = 15)
  14. animal_model.summary()

TensorFlow 版本:2.4.1

Numpy 版本:1.19.5

熊猫版本:1.0.1

解决方法

为了加载图像,您可以使用以下代码:

  1. image = cv2.imread(filename)
  2. image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)

为了调整图像的大小和缩放比例,最好让模型“嵌入”预处理功能。

  1. IMG_SIZE = 180
  2. resize_and_rescale = tf.keras.Sequential([
  3. layers.experimental.preprocessing.Resizing(IMG_SIZE,IMG_SIZE),layers.experimental.preprocessing.Rescaling(1./255)
  4. ])
  5. model = tf.keras.Sequential(
  6. [
  7. resize_and_rescale,layers.Conv2D(32,3,activation="relu"),layers.MaxPooling2D(),layers.Conv2D(64,layers.Conv2D(128,layers.Flatten(),layers.Dense(128,layers.Dense(len(class_names),activation="softmax"),]
  8. )
  9. model.compile(
  10. optimizer="adam",loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=["accuracy"],)

注意:
处理图像时使用 tf.Data 而不是 numpy 数组。您可以使用以下代码作为示例:
https://github.com/alessiosavi/tensorflow-face-recognition/blob/90d4acbea8f79539826b50c82a63a7c151441a1a/dense_embedding.py#L155

'<=' 在 'numpy.ndarray' 和 'numpy.ndarray' 的实例之间不受支持但 LHS 是 pd.Timestamp

'<=' 在 'numpy.ndarray' 和 'numpy.ndarray' 的实例之间不受支持但 LHS 是 pd.Timestamp

如何解决''<='' 在 ''numpy.ndarray'' 和 ''numpy.ndarray'' 的实例之间不受支持但 LHS 是 pd.Timestamp

代码:

print(min_time.__class__,min_time,times.__class__)
print(max_time.__class__,max_time)
mask = (times >= min_time) * (times <= max_time)

产量:

''pandas._libs.tslibs.timestamps.Timestamp''> 2020-02-12 00:00:00+00:00

''pandas._libs.tslibs.timestamps.Timestamp''> 2020-02-12 00:00:00+00:00

''

什么给? LHS 显然是 pandas.Timestamp,RHS 显然是 numpy.ndarray。我的类型发生了什么神奇的事情吗?

'numpy.ndarray' 对象在 map 函数中不可调用,使用 numpy 数组

'numpy.ndarray' 对象在 map 函数中不可调用,使用 numpy 数组

如何解决''numpy.ndarray'' 对象在 map 函数中不可调用,使用 numpy 数组

我的目标是规范化二维 numpy 数组/矩阵的每一行。我以为会很简单.. 我正在尝试执行如下代码所示的地图操作。我查找了这个错误,它在像函数一样调用数组时发生,这不是我的情况..

输入参数(p_list)是一个二维的numpy数组:

  1. import numpy as np
  2. def normalize(p_list):
  3. if (type(p_list) == list):
  4. L = p_list
  5. else:
  6. L = p_list.tolist() # Converts numpy matrix to list of lists.
  7. print(type(L)) # L is of type list ! (even if p_list is of type numpy.ndarray)
  8. return list(map(lambda p: np.linalg.norm(p),L))

我的错误,发生在 list(map(...)) 行。 :

  1. TypeError: ''numpy.ndarray'' object is not callable

对不起我的误解,如果这个问题已经解决了.. :/

Jupyter 中的 Numpy 在打印时出错(Python 版本 3.8.8):TypeError: 'numpy.ndarray' object is not callable

Jupyter 中的 Numpy 在打印时出错(Python 版本 3.8.8):TypeError: 'numpy.ndarray' object is not callable

如何解决Jupyter 中的 Numpy 在打印时出错(Python 版本 3.8.8):TypeError: ''numpy.ndarray'' object is not callable?

晚安, 尝试打印以下内容时,我在 jupyter 中遇到了 numpy 问题,并且得到了一个 错误: 需要注意的是python版本是3.8.8。 我先用 spyder 测试它,它运行正确,它给了我预期的结果

使用 Spyder:

import numpy as np
    for i in range (5):
        n = np.random.rand ()
    print (n)
Results
0.6604903457995978
0.8236300859753154
0.16067650689842816
0.6967868357083673
0.4231597934445466

现在有了 jupyter

import numpy as np
    for i in range (5):
        n = np.random.rand ()
    print (n)
-------------------------------------------------- ------
TypeError Traceback (most recent call last)
<ipython-input-78-0c6a801b3ea9> in <module>
       2 for i in range (5):
       3 n = np.random.rand ()
---->  4 print (n)

       TypeError: ''numpy.ndarray'' object is not callable

感谢您对我如何在 Jupyter 中解决此问题的帮助。

非常感谢您抽出宝贵时间。

阿特,约翰”

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

今天关于Matplotlib 堆叠直方图 numpy.ndarray 错误python堆叠直方图的讲解已经结束,谢谢您的阅读,如果想了解更多关于"ValueError: Failed to convert a NumPy array to an Tensor (Unsupported object type numpy.ndarray). 在 TensorFlow CNN 中进行图像分类、'<=' 在 'numpy.ndarray' 和 'numpy.ndarray' 的实例之间不受支持但 LHS 是 pd.Timestamp、'numpy.ndarray' 对象在 map 函数中不可调用,使用 numpy 数组、Jupyter 中的 Numpy 在打印时出错(Python 版本 3.8.8):TypeError: 'numpy.ndarray' object is not callable的相关知识,请在本站搜索。

本文标签: