numpy.md---张云粮-2020-01-20

import random
import time
import numpy as np
a = []
for i in range(100000000):
	a.append(random.random())
t1 = time.time()
sum1 = sum(a)
t2 = time.time()

b = np.array(a)
t4 = time.time()
sum2 = np.sum(b)
t5 = time.time()
print(t2-t1, t5-t4)

对比python自带求和函数和numpy的消耗的时间

numpy:

强大的N维数组对象

支持大量的数据运算

众多机器学习框架的基础库(Scipy/Pandas/sklearn/Tensorflow)

numpy快速的原因:

1579254688887

array默认的创建方式为“C-type” 以row为主在内存中排列

指定为“Fortran”,以column为主在内存中排列

2.支持并行化运算,即向量化运算

Numpy提供了一个N维数组类型的ndarray,描述了相同类型“items"的集合

每个items占用相同大小的内存块;每个item由单独数据类型对象指定的,可以为基本的类型

整数、浮点数等待,也可以为数据类型对象,表示数据结构

3.属性

1579255352292

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 # 一个元素的长度

a.shape
b.shape
c.shape


数字的类型有:np.bool (布尔类型)

np.int8 np.int32 np.int64(整数)

np.uint8 np.uint16 np.unit32...(无符号数)

np.float16 np.float32 np.float64

np.complex64 np.complex128 复数

np.object_ python对象 np.sting_ 字符串 np.unicode_ unicode类型

a = np.array([[1,2,3],[4,5,6]], dtype=np.float32)
 a.dtype
 

arr = np.array(['python','tensorflow','scikit-learn','numpy'],dtype = np.string_)
arr.dtype

# 自定义数据类型
mytype = np.dtype([('name', np.string_, 10), ('height', np.float64)])
arr = np.array([('Sarah', (8.0)), ('John', (6.0))], dtype=mytype)
arr
arr[0]['name']

1579403062977

随机生成500个股票两年的交易日涨幅数据

创建一个符合正态分布的500个股票,504天的涨跌情况

# 均值/标准差/维度
stock_day_rise = np.random.normal(0, 1, (500,504))
# 获取第一个股票的前10个交易日的涨跌幅度
stock_day_rise[0, 0:10]
# 行列转换
stock_day_rise.reshape([504, 500])
# 修改类型
stock_day_rise.reshape([504, 500]).astype(np.int32)
# 转置
stock_day_rise.T
# 三元运算符 np.where
np.where(np.logical_and(temp > 0.5, temp < 1), 1, 0)

广播机制

数组之间运算,它们的shape在以下任意满足一个条件下可以进行数学运算:

1、维度相等 2、shape中,相对应的地方为1

1579404261602

矩阵(二维数组)

np.mat()

矩阵乘法

  • mp.matmul 机制

(m行,n列)×(n行,L列)=(m行,L列)

a = np.array([[80,86],
[82,80],
[85,78],
[90,90],
[86,82],
[82,90],
[78,80],
[92,94]])
b = np.array([[0.7],[0.3]])

np.matmul(a, b)

我们需要工具去获取,但是Numpy其实并不适合IO操作,这是Numpy不方便的地方。

原文地址:https://www.cnblogs.com/niaocaizhou/p/12219128.html