- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有不同类型的数据。其中大多数是int
,有时是float
。 int
的大小不同,因此大小为 8/16/32 位。
对于这种情况,我正在创建一个数字类型转换器。因此我使用 isinstence() 检查类型。这是因为我读到 isinstance()
比 type()
更糟糕。
重点是我得到的很多数据都是 numpy 数组。我使用spyder作为IDE,然后我看到变量也是一种类型。但是当我输入 isinstance(var,'type i read')
时,我得到 False
。
我做了一些检查:
a = 2.17
b = 3
c = np.array(np.random.rand(2, 8))
d = np.array([1])
因为有isinstance(var,type)
我得到:
isinstance(a, float)
True
isinstance(b, int)
True
isinstance(c, float) # or isinstance(c, np.float64)
False
isinstance(d, int) # or isinstance(c, np.int32)
False
c
和 d
当我询问时为 True
isinstance(c, np.ndarray)
True
isinstance(d, np.ndarray)
True
我可以通过
检查 ndarray 中的步骤isinstance(c[i][j], np.float64)
True
isinstance(d[i], np.int32)
True
但这意味着对于每个维度我都必须添加一个新索引,否则它又是False
。我可以使用 dtype
检查类型,例如 c.dtype == 'float64'
...
好吧,对于我所发现和尝试过的......我的问题基本上是:
isinstance()
和 type()
相比,var.dtype
方法如何(最差/更好等)? var.dtype
比 isinstance()
更糟糕,isinstance()
中是否有一些方法不需要所有手动索引? (自动索引等)? 最佳答案
数组是np.ndarray
类型的对象。它的值或元素存储在数据缓冲区中,可以将其视为连续的内存字节 block 。数据缓冲区中的字节没有类型,因为它们不是 Python 对象。
该数组有一个dtype
参数,用于解释这些字节。如果dtype
是int32
(有各种同义词),则4个字节被解释为整数。访问一个元素,例如 c[0]
会给出一个取决于 dtype 的新对象,例如对象类型 np.int32
。
c[0].item
将给出相应类型的 Python 对象:
In [2102]: c=np.array([1])
In [2103]: c.dtype
Out[2103]: dtype('int32')
In [2104]: type(c)
Out[2104]: numpy.ndarray
In [2105]: type(c[0])
Out[2105]: numpy.int32
In [2107]: c[0].item()
Out[2107]: 1
In [2108]: type(c[0].item())
Out[2108]: int
(c[0].dtype
与 c.dtype
相同;您不需要索引数组的各个元素来检查其 dtype )。
该数组的相同 4 个字节可以被视为 dtype
int8
- 一个单字节整数。
In [2112]: c.view('b')
Out[2112]: array([1, 0, 0, 0], dtype=int8)
这个备用 View 的单个元素是np.int8
,但是当我使用item()
时,我得到一个Python整数。没有 int8
Python 数字类型。
In [2113]: type(c.view('b')[0])
Out[2113]: numpy.int8
In [2115]: type(c.view('b')[0].item())
Out[2115]: int
列表包含指向 Python 对象的指针,每个对象都有一个类型。 dtype=object
数组也是如此。但常见的数值数组不包含Python整数或 float 。它有一个数据缓冲区,可以根据dtype
以各种方式解释。 Python 整数的大小没有不同,至少与 numpy 数据类型的大小不同。
因此,isinstance
和 type()
内容不适用于 ndarray
的内容。
====================
根据我收集的评论,您正在尝试将整数数组转换为 float 。您没有转换标量。如果是这样,那么 dtype
才是最重要的;数组总是有一个dtype
。目前尚不清楚您是否可以将 np.float32
转换为 np.float64
。
我建议学习并尝试 np.can_cast
函数和 x.astype
方法。
x.astype(np.float64, copy=False)
例如,
会将所有 int 数据类型转换为 float,而不复制已经是 float64 的数据类型。它可以复制和转换np.float32
。
另请查看这些函数的casting
参数。
============================
我在scipy.optimize.minimize
中发现了另一个测试工具
In [156]: np.typecodes
Out[156]:
{'All': '?bhilqpBHILQPefdgFDGSUVOMm',
'AllFloat': 'efdgFDG',
'AllInteger': 'bBhHiIlLqQpP',
'Character': 'c',
'Complex': 'FDG',
'Datetime': 'Mm',
'Float': 'efdg',
'Integer': 'bhilqp',
'UnsignedInteger': 'BHILQP'}
它可用于检查整数:
if x0.dtype.kind in np.typecodes["AllInteger"]:
x0 = np.asarray(x0, dtype=float)
关于python-3.x - 检查 numpy 数组中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40312013/
我需要根据需要动态设置文本区域,但它不想正常工作。 JQuery 会自行检查,但无法检查是否已检查。但是当您在第二个单选框内单击时,始终需要文本区域。我尝试了很多次让它工作,但它仍然有问题。我添加了“
我需要在 Django 中进行 API 调用(某种形式),作为我们所需的自定义身份验证系统的一部分。用户名和密码通过 SSL 发送到特定 URL(对这些参数使用 GET),响应应该是 HTTP 200
我将在我的可移植 C 代码中使用 #warning 来生成编译时警告。但并非所有平台都支持 #warning。有什么方法可以找到该平台是否支持 #warning。 #ifdef warning
我编写了一个函数来检查某个数字是否存在于某个区间内。停止搜索的最佳方法是什么?这个: for (i = a; i <= b; i++) { fi = f(i); if (fi == c) {
我想知道在 c 中是否有一种方法可以检查,例如在 for 函数中,如果变量等于或不等于某些字符,而不必每次都重复进行相等性检查。如果我没记错的话,以这种方式检查相等性是不正确的: if (a == (
我有如下日志功能 void log_error(char * file_name, int line_num, int err_code) { printf("%s:%d:%s\n", fil
使用 ssh-keygen 生成的 key 对在 macOS 上可以有不同的格式。 macOS 可读的标准 PEM ASN.1 对象 SecKey API 带有文本标题的 PEM OpenSSH ke
我正在尝试编写一个 excel if 语句。我不熟悉使用 Excel 具有的所有额外功能。我正在使用一个名为 importXML() 的函数.我正在尝试检查我正在使用的函数是否生成“#VALUE!”错
有没有办法检查是否没有 AIO 写入给定文件?我在我的 Unix 类(class)上制作了一个项目,该项目将是一个上下文无关(基于 UDP)的国际象棋服务器,并且所有数据都必须存储在文件中。应用程序将
我有一个如下所示的函数: public Status execute() { Status status = doSomething(); if (status != Stat
我正在使用 Composer,我不希望 PhpStorm 在 vendor 文件夹上运行任何错误检查或检查,因为它对 vendor/中的某些代码显示误报composer/autoload_static
Chapel 的一个很好的特性是它区分了数组的域和它的分布。检查两个数组是否具有相同的域和分布(通常想要的)的最佳方法是什么? 我能看到的最好的方法是检查 D1==D2和 D1.dist==D2.di
在我的 JavaScript 函数中,我为所有输入、文本区域和选择字段提供实际值作为 initial_value: $('input, textarea, select').each(function
我正在编写一个分解为几个简单函数的 PHP 类。在构造函数中,它调用另一个名为 processFile 的函数。该函数调用 5 个私有(private)函数并进行检查。如果检查失败,它会将消息分配给
这个问题已经有答案了: How to detect if user it trying to open a link in a new tab? (2 个回答) 已关闭 7 年前。 我认为 JavaS
我正在浏览我们的代码库并看到很多这样的测试: declare @row_id int = ... declare @row_attribute string select @row_attribu
我正在声明一个用作比较的函数。我的问题是: 为什么条件充当语句? 为什么第 4 行可以工作,而第 5 行却不行? 我知道这段代码不切实际且未使用,但为什么编译器允许这种语法? 谷歌没有找到答案。但话又
到目前为止,我有一个带有空文本字段的 PHP Kontaktform,并使用以下命令检查了所需的字段: $name = check_input($_POST['name'], "请输入姓名。"); 现
目前,我能想到的合理检查的唯一方法没有臃肿的逻辑: if ( $value > 0 ) { // Okay } else { // Not Okay } 有没有更好的办法? 最佳答案
我正在尝试运行一个脚本,如果 i 存在(意味着存在 i 值,任何值)或其他部分,我希望运行其中的一部分如果i没有值就运行,有人可以启发我吗? 我说的是 for 循环,比如 for (var i=0;
我是一名优秀的程序员,十分优秀!