numpy在存储数据的时候,数据与数据的地址都是连续的,这样就给我们操作带来了好处,处理速度快。在计算机内存里是存储在一个连续空间上的,而对于这个连续空间,我们如果创建 Array 的方式不同,在这个连续空间上的排列顺序也有不同。
创建array的默认方式是 “C-type” 以 row 为主在内存中排列
如果是 “Fortran” 的方式创建的,就是以 column 为主在内存中排列
数组属性
属性名字 | 属性解释 |
---|---|
ndarray.shape | 数组维度的元组 |
ndarray.flags | 有关阵列内存布局的信息 |
ndarray.ndim | 数组维数 |
ndarray.size | 数组中的元素数量 |
ndarray.itemsize | 一个数组元素的长度(字节) |
ndarray.nbytes | 数组元素消耗的总字节数 |
数组类型,dtype是numpy.dtype类型
名称 | 描述 | 简写 |
---|---|---|
np.bool | 用一个字节存储的布尔类型(True或False) | ‘b‘ |
np.int8 | 一个字节大小,-128 至 127 | ‘i‘ |
np.int16 | 整数,-32768 至 32767 | ‘i2‘ |
np.int32 | 整数,-2 31 至 2 32 -1 | ‘i4‘ |
np.int64 | 整数,-2 63 至 2 63 - 1 | ‘i8‘ |
np.uint8 | 无符号整数,0 至 255 | ‘u‘ |
np.uint16 | 无符号整数,0 至 65535 | ‘u2‘ |
np.uint32 | 无符号整数,0 至 2 ** 32 - 1 | ‘u4‘ |
np.uint64 | 无符号整数,0 至 2 ** 64 - 1 | ‘u8‘ |
np.float16 | 半精度浮点数:16位,正负号1位,指数5位,精度10位 | ‘f2‘ |
np.float32 | 单精度浮点数:32位,正负号1位,指数8位,精度23位 | ‘f4‘ |
np.float64 | 双精度浮点数:64位,正负号1位,指数11位,精度52位 | ‘f8‘ |
np.complex64 | 复数,分别用两个32位浮点数表示实部和虚部 | ‘c8‘ |
np.complex128 | 复数,分别用两个64位浮点数表示实部和虚部 | ‘c16‘ |
np.object_ | python对象 | ‘O‘ |
np.string_ | 字符串 | ‘S‘ |
np.unicode_ | unicode类型 | ‘U‘ |
# 创建一个数组 a = np.array([[1,2,3],[4,5,6]]) b = np.array([1,2,3,4]) c = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]]) # 类型,大小,字节数 a.dtype # dtype(‘int64‘) a.size # 元素的个数 6 a.nbytes # 总字节数 48 a.itemsize # 一个元素的长度 # 形状比较 # 1维形状 (4,) # 2维形状 (2,3) # 3维形状 (2, 2, 3) a.shape # (2, 3) b.shape #( 4,) c.shape # (2, 2, 3) aa = np.array([[1,2,3],[4,5,6]], dtype=np.float32) aa.dtype # dtype(‘float32‘) # 创建数组的时候指定类型 arr = np.array([‘python‘,‘tensorflow‘,‘scikit-learn‘,‘numpy‘],dtype = np.string_) arr.dtype #array([b‘python‘, b‘tensorflow‘, b‘scikit-learn‘, b‘numpy‘], dtype=‘|S12‘)
待补充
原文:https://www.cnblogs.com/caijunchao/p/12757148.html