【问题标题】:making matrix using numpy使用 numpy 制作矩阵
【发布时间】:2016-10-24 00:31:23
【问题描述】:

我想制作一个 5 行 4 列的矩阵。问题是当我运行它时出现一个错误“Traceback(最近一次调用最后一次): 文件“C:\Users\yasini\Desktop\30.py”,第 21 行,在 ['ART|Ф',0.71], ['N|Ф',0.29], ['V|Ф',0.0001], ['P|Ф',0]]).reshape(5,4) ValueError: 新数组的总大小必须不变”。

我该如何解决?

import numpy as np
A = np.array([['ART|ART',0], ['N|ART',1], ['V|ART',0], ['P|ART',0],
     ['ART|N',0.0001], ['N|N',0.13], ['V|N',0.43], ['P|N',0.44],
     ['ART|V',0.65], ['N|V',0.35], ['V|V',0.0001], ['P|V',0.0001],
     ['ART|P',0.74], ['N|P',0.26], ['V|P',0.0001], ['P|P',0.0001],
     ['ART|Ф',0.71], ['N|Ф',0.29], ['V|Ф',0.0001], ['P|Ф',0]]).reshape(5,4)
print (A)

【问题讨论】:

  • 错误告诉你问题所在,你为什么要问我们?您的初始数组有 20*2=40 个元素,您想将其重塑为 5*4=20 元素数组。
  • 因为您创建的矩阵没有 5 行 4 列。您需要删除其中一些:[ ]
  • 当我从最后一个单元格(['P|Ф',0])中省略零时,它可以正常工作并生成一个 5*4 矩阵,但是当我再次添加零时,会发生此错误
  • 打印你的“矩阵”,你会发现它不是你想的那样! “矩阵”是 2d 的,你得到的是一种定义不明确的 3d 数组......(每个单元格包含一个包含 2 个元素的列表,除了最后一个只有 1 个元素)
  • 也许共享所需的输出会有所帮助,因为您似乎对维度的数量感到困惑......

标签: python numpy matrix


【解决方案1】:

省略reshape 步骤并打印A.shapeA 中有多少项目?如果没有 4*5=20,那么 reshape 为(5,4) 会产生这个错误。当某个步骤出现错误时,请确保前一个步骤产生了您所期望的结果。

我的猜测是形状是 (20,2),dtype 是字符串(或者可能是对象)。这不是您期望的 20 对 ('str',int) 元组。

为什么要在一个数组中混合名称和数字?

【讨论】:

  • 我需要它们来标记句子(在 nlp 中)。这些数字是标签的概率。首先,我制作了一个仅由数字组成的矩阵。然后因为我无法将标题(标签)添加到矩阵中,我将它们带入矩阵中以将每个数字分配给它的标签。
  • 将标签放在单独的列表中。
猜你喜欢
  • 2018-01-02
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多