版权声明:本文为博主原创文章,未经博主允许不得转载。 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位浮点数表示 |