当前位置: 首页 > 知识库问答 >
问题:

在Python3中将整数数组转换为二进制:“TypeError:只能转换整数标量数组?”

澹台建华
2023-03-14

据我所知,这不是一个重复的问题。我将在下面列出相关但不同的问题。

下面是我试图运行的代码,将一个int数组转换为二进制,作为一个单一的矢量化操作:

import numpy as np

a = np.array([1,2,3,4],dtype=int)
b = bin(a)

----> 4 b = bin(a)

TypeError: only integer scalar arrays can be converted to a scalar index

...嗯...我实际上是在一个“整数标量数组”上操作。(并且将dtype=int更改为类似于dtype=np.int64没有效果。)

我意识到可以通过循环(Python 2问题)或列表理解来做到这一点(我知道bin产生字符串),所以...这篇文章更多的是一个问题:为什么我不能作为一个单一的矢量化操作来做为什么是错误消息?在这种情况下似乎很不合适。有什么想法吗?

相关但非重复的问题:这里,这里,这里,这里,这里。

bin的文档显示为“转换整数......”这表明数组是不允许的,它是一个Python函数,而不是Numpy函数。(好的,然后列出理解或循环——这些似乎很慢,我希望是快速的)。但是,为什么整数标量数组的错误消息?

谢谢

共有1个答案

傅博瀚
2023-03-14

您需要将函数映射到numpy数组的每个元素-

import numpy as np
a = np.array([1,2,3,4],dtype=int)
b = np.array(list(map(bin,a)))

此外,您还可以查看此链接—将函数映射到numpy数组的最有效方法

 类似资料:
  • 我是相当新的python/Numpy和不完全意识到它。 我一直试图实现一个算法,并在某一点上卡住了,当试图把数组的点积与其转置。我得到的错误是 TypeError:只能将整数标量数组转换为标量索引。 下面是我的代码,供参考。

  • 尝试在包含279个文件的数据集上执行Kfold cv时,执行k-means后,文件的形状为。我对它进行了重塑,以使其适合svm。现在形状是。尝试Kfold cv方法会给我带来错误 msgstr"只有整数标量数组可以转换为标量索引"

  • 我看到的代码是: 不同变量的值是: ID: 欠条: 阈值:

  • 我为这个问题制作了两个数组的简单示例:是一个一维数组,索引处有标签,对应于nD数组的相同索引。我获取标签2出现的所有索引,并希望检索中的值。 因此,如果我想要标签2,我得到索引0和3,这应该给我相应数组中索引0和3的值。 但是当我想调用我的函数时,我收到一个TypeError@。 我的职能:

  • 我想计算每小时重复的行数。 我的数据帧: 我的代码:我尝试按小时对数据进行分组并计数。转换没有帮助。 这就是错误: 这是我想要的输出:

  • 问题内容: 为了将整数转换为二进制,我使用了以下代码: 什么时候擦除“ 0b”,我用这个: 我能做些什么,如果我想展现的,而不是? 问题答案: 仅说明格式化字符串的部分: 将变量放入字符串 将变量放在参数位置0 为该变量添加格式设置选项(否则它将代表小数) 将数字格式化为左侧零填充的八位数字 将数字转换为其二进制表示形式 如果您使用的是Python 3.6或更高版本,则还可以使用f字符串: