当前位置: 首页 > 面试题库 >

从Numpy矩阵构造Python集

宗增
2023-03-14
问题内容

我正在尝试执行以下操作

>> from numpy import *
>> x = array([[3,2,3],[4,4,4]])
>> y = set(x)
TypeError: unhashable type: 'numpy.ndarray'

如何使用Numpy数组中的所有元素轻松高效地创建集合?


问题答案:

如果需要一组元素,这是另一种可能更快的方法:

y = set(x.flatten())

PS
:之间执行比较后x.flatx.flatten()x.ravel()一个10x100阵列上,我发现,它们都在大约相同的速度来执行。对于3x3阵列,最快的版本是迭代器版本:

y = set(x.flat)

我建议这样做,因为它是内存消耗较少的版本(它随阵列的大小扩展得很好)。

PPS :还有一个NumPy函数可以执行类似的操作:

y = numpy.unique(x)

这确实会产生一个NumPy数组,该元素具有与相同的元素set(x.flat),但作为NumPy数组。这是非常快的(快将近10倍),但是如果需要set,则执行set(numpy.unique(x))的过程将比其他过程要慢一些(构建集合会带来很大的开销)。



 类似资料:
  • 我正在尝试创建一个类似于这样的numpy数组: 所以这涉及到更新主对角线和它上面的两条对角线。 做这件事的有效方法是什么?

  • 问题内容: 我有一个Sqlite数据库,其中包含以下类型的架构: 该表包含术语及其在文档中的各自计数。喜欢 该矩阵可以被视为稀疏矩阵,因为每个文档都包含很少的具有非零值的项。 我将如何使用numpy从稀疏矩阵创建密集矩阵,因为我必须使用余弦相似度来计算文档之间的相似度。 这个密集的矩阵看起来像一个表格,第一列为docid,所有术语列为第一行,其余单元格将包含计数。 问题答案: 我用熊猫解决了这个问

  • 这得到了我想要的,但可能没有很好地扩展? 产量

  • 问题内容: 我知道如何在R中执行此操作。但是,熊猫中是否有任何函数可以将数据帧转换为包含两个同时出现的计数的nxn同时出现矩阵。 例如矩阵df: 将产生: 由于矩阵是在对角线上镜像的,所以我想会有一种优化代码的方法。 问题答案: 这是一个简单的线性代数,您将矩阵与其转置相乘(您的示例包含字符串,请不要忘记将它们转换为整数): 如果像R答案中一样,如果您想重设对角线,则可以使用numpy的:

  • 本文向大家介绍Python中的Numpy矩阵操作,包括了Python中的Numpy矩阵操作的使用技巧和注意事项,需要的朋友参考一下 Numpy 通过观察Python的自有数据类型,我们可以发现Python原生并不提供多维数组的操作,那么为了处理矩阵,就需要使用第三方提供的相关的包。 NumPy 是一个非常优秀的提供矩阵操作的包。NumPy的主要目标,就是提供多维数组,从而实现矩阵操作。 NumPy

  • 主要内容:逐元素矩阵乘法,矩阵乘积运算,矩阵点积矩阵乘法是将两个矩阵作为输入值,并将 A 矩阵的行与 B 矩阵的列对应位置相乘再相加,从而生成一个新矩阵,如下图所示: 注意:必须确保第一个矩阵中的行数等于第二个矩阵中的列数,否则不能进行矩阵乘法运算。 图1:矩阵乘法 矩阵乘法运算被称为向量化操作,向量化的主要目的是减少使用的 for 循环次数或者根本不使用。这样做的目的是为了加速程序的计算。 下面介绍 NumPy 提供的三种矩阵乘法,从而进一步