NumPy入门(1)_数据类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Magic_Ninja/article/details/85294282

代码来自于《Python数据科学手册》的代码复现。
来自和鲸科技(科赛)的K-lab项目

查看版本

import numpy
numpy.__version__
'1.14.2'
time: 10.3 ms

大多数人都习惯使用np左右别名导入NumPy 例如:

import numpy as np
time: 834 µs

Python的数据类型

Python的数据类型是动态推断的,这是我认为比C语言灵活的地方。 例如:

x = 4
x = "four"

列表

L = list(range(10))
L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
time: 2.64 ms
type(L[2])
int
time: 3.34 ms
L2 = [str( c ) for c in L] 
L2
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
time: 2.62 ms
type(L2[0])
str
time: 2.29 ms
L3 = [True, '2', 3.0, 4]
[type(item) for item in L3]
[bool, str, float, int]
time: 2.92 ms

固定数组

import array
L = list(range(10))
A = array.array('i', L)
A 
array('i', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
time: 3.11 ms

numpy包中的ndarray对象也达到该效果

从Python列表创建数组

利用np.array从Python列表创建数组: 整型数组

np.array([1, 4, 2, 5, 3])
array([1, 4, 2, 5, 3])
time: 4.02 ms

numpy要求数组必须包含同一类型的数据,若是不同则向上转换

np.array([3.14, 4, 2, 3])
array([3.14, 4.  , 2.  , 3.  ])
time: 3.02 ms

还可以设置固定的数据类型,用dtype关键字:

np.array([1, 2, 3, 4], dtype = 'float32')
array([1., 2., 3., 4.], dtype=float32)
time: 2.86 ms

numpy数组是可以多维的,下面是列表初始化多维数组的一种

嵌套列表构造的多维数组

np.array([range(i, i + 3) for i in [2, 4, 6]])
array([[2, 3, 4],
       [4, 5, 6],
       [6, 7, 8]])
time: 2.89 ms

从头创建数组

面对大型数组的时候, 利用numpy内置的方法从头创建数组是一种更搞笑的方法。一下是示例:
创建一个长度为10 的数组, 数组的值都是0

np.zeros(10, dtype = int)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
time: 2.86 ms

创建一个3 x 5的浮点数组,数组的值都是1

np.ones((3, 5), dtype = float)
array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])
time: 2.82 ms

创建一个 3 X 5 的浮点型数组,数组的值都是3.14

np.full((3, 5), 3.14)
array([[3.14, 3.14, 3.14, 3.14, 3.14],
       [3.14, 3.14, 3.14, 3.14, 3.14],
       [3.14, 3.14, 3.14, 3.14, 3.14]])
time: 3.07 ms

创建一个线性序列数组

np.arange(0, 20, 2)
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])

time: 2.58 ms
创建一个5个元素的数组,这2个数均匀的分配到0~1

np.linspace(0, 1, 5)
array([0.  , 0.25, 0.5 , 0.75, 1.  ])
time: 3.11 ms

创建一个 3 X 3 的,在0~1均匀分布的随级数组组成的数组

np.random.random((3, 3))
array([[0.06894943, 0.8685184 , 0.46117051],
       [0.22624146, 0.93017847, 0.84763557],
       [0.81386909, 0.41591071, 0.94192142]])
time: 2.99 ms

创建一个3X3的,均值为0, 彼标准差为1的正态随机数组

np.random.normal(0, 1, (3, 3))
array([[ 0.84262482, -0.68791928, -0.22379997],
       [-0.13376647,  0.68875823,  0.40452055],
       [ 0.75179075, -0.08039557,  0.45733357]])
time: 3.27 ms

创建一个 3 X 3 的,[0, 10)区间随机整型数组

np.random.randint(0, 10, (3, 3))
array([[6, 7, 7],
       [5, 0, 1],
       [4, 7, 4]])
time: 3.87 ms

创建一个 3 X 3 的单位矩阵

np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
time: 3.84 ms

创建一个由3个整型数组成为初始化的数组数组的值是内存空间的任意值

np.empty(3)
array([1., 1., 1.])
time: 2.71 ms

NumPy标准数据类型

数据类型 描述
bool_ 布尔值(真、 True 或假、False), 用一个字节存储
int_ 默认整型(类似于C语言中的long,通常情况下是int64或int32)
intc 同C语言的int相同(通常是int32或int64)
intp 用作索引的整型(和C语言的ssize _t相同,通常情况下是int32或int64)
int8 字节(byte, 范围从-128到127)
int16 整型(范围从-32768到32767)
int32 整型(范围从-2147483648到2147483647)
int64 整型(范围从-9223372036854775808到9223372036854775807)
uint8 无符号整型(范围从0到255)
uint16 无符号整型(范围从0到65535)
uint32 无符号整型(范围从0到4294967295)
uint64 无符号整型(范围从0到18446744073709551615)
float_ float64的简化形式
float16 半精度浮点型:符号比特位,5比特位指数(exponent), 10 比特位尾数(mantissa)
float32 单精度浮点型:符号比特位,8比特位指数,23 比特位尾数
float64 双精度浮点型:符号比特位,11比特位指数,52 比特位尾数
complex_ complex128的简化形式
complex64 复数,由两个32位浮点数表示
complex128 复数,由两个64位浮点数表示

猜你喜欢

转载自blog.csdn.net/Magic_Ninja/article/details/85294282