python numpy array dtype和astype类型转换的区别

Python3 本身对整数的支持做了提升,可以支持无限长度的整数:比如:

 b = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Python的模块numpy array定义的数组在windows和MACOS上默认长度是不一样的。

  • windows上的numpy array,如果不指定dtype的话,默认长度是32位
  • MacOS上的numpy array,如果不指定dtype的话,默认长度是64位

也许是numpy array底层是C语言在不同平台上实现导致的差异。

如果在windows上定义numpy array的一个数组:

import numpy as np
a = np.array([200, 200, 200, 200])

那么查看变量,发现数组的每个元素是32位。

 如果用dtype进行32到64位的转换:

a.dtype=np.int64

那么查看变量,发现数组的元素变为2个,也就是每2个32位元素合成一个64位元素:

如果使用astype进行32到64位的转换:

a = a.astype(np.int64)

那么查看变量,发现数组的元素还是4个,每个元素值不变,只是类型变成int64.

 另外也可以在定义numpy array时候,直接通过dtype指定数组元素的类型。

a = np.array([200, 200, 200, 200],dtype = np.int64)

a
Out[44]: array([200, 200, 200, 200], dtype=int64)

你可能感兴趣的:(python,numpy,开发语言,astype,dtype)