Numpy(Numerical Python):是一个开源的Python科学计算库,用于快速处理任意维度的数组,Numpy支持常见的数组和矩阵操作
import numpy as np
# 创建ndarray
number = np.array(
[[88, 89, 87, 67, 79],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[94, 92, 93, 67, 64]
])
number
结果如下
机器学习特点:大量的数据运算,若无快速的解决方案,python在机器学习领域可能也达不到好的效果
Numpy专门针对ndarray的操作和运算进行了设计,所以数组的存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显
import random
import time
import numpy as np
a = []
for i in range(100000000):
a.append(random.random())
# 通过%time魔法方法, 查看当前行的代码运行一次所花费的时间
%time sum1=sum(a) # 原生Python计算时间
b=np.array(a)
%time sum2=np.sum(b) # numpy计算时间
结果如下
数组属性反映了数组本身固有的信息
属性名字 | 属性解释 |
---|---|
ndarray.shape | 数组维度的元组 |
ndarray.ndim | 数组维数 |
ndarray.size | 数组中的元素数量 |
ndarray.itemsize | 一个数组元素的长度(字节) |
ndarray.dtype | 数组元素的类型 |
import numpy as np
# 创建ndarray
number = np.array(
[[88, 89, 87, 67, 79],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[94, 92, 93, 67, 64]
])
print(number.shape) # (5, 5)
print(number.ndim) # 2
print(number.size) # 25
print(number.itemsize) # 4
number.dtype # dtype('int32')
输出如下
a = np.array([[1,2,3],[4,5,6]]) # 二维数组
a.shape # (2, 3)
b = np.array([1,2,3,4,5]) # 一维数组
b.shape # (5,)
c = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]]) # 三维数组
c.shape # (2, 2, 3)
结果如下
名称 | 描述 | 简写 |
---|---|---|
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' |
创建数组时可指定类型,若不指定,整数默认int64,小数默认float64,演示如下
学习导航:http://xqnav.top/