- 生成数组声明的方式
- 数据类型
- ndarray的属性
- 基本操作
- 切片与形状变形
- 切片
- 变形
- 数据类型修改
- 数据去重
- 运算
- 逻辑运算
- 条件判断赋值
- 其它运算
- 矩阵运算
score = np.array([[1, 2, 3], [4, 5, 6]]) score = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32) score = np.array([["q", "a", "z"], ["b", "c", "d"]], dtype=np.string_) # linespace(开始, 结束, 个数) score = np.linespace(0, 100, 11) # arange(start, stop, step, dtype) score = np.arange(0, 100, 2) # logspace(start, stop, num) 生成以10的N次幂数组。 # 每个数都是10的几次方,在0和3之间,生成2个数 score = np.arange(0, 3, 2)数据类型
np.string_ np.unicode_ np.object_ np.float32ndarray的属性
print(type(score)) # 打印类型 numpy.ndarray print(score.shape) # shape 数组维度元组,2*3的维度,打印结果:(2, 3) print(score.ndim) # ndim 数组维数,打印结果:2 print(score.size) # size 数组中元素数量,打印结果:6 print(score.itemsize) # itemsize 一个元组元素的长度(字节),打印结果4 print(score.dtype) # dtype 数组元素的类型,打印结果int32基本操作
# 生成0或1的数组, one = np.ones([3, 4]) zero = np.zeros([3, 4]) # 生成类似的数组, zero = np.zeros_like(one) one = np.ones_like(zero) # 深拷贝array和浅拷贝asarray数组,深拷贝原数组改变不会跟着改变 a1 = np.array(one) a2 = np.asarray(one)切片与形状变形 切片
stock_change = np.random.normal(0, 1, (4, 5)) print(stock_change[0, 0:3]) # 切片只取一行三列。 print(stock_change[0:2, 0:2]) print(stock_change)变形
# reshape,把数据改成5行4列。-1代表不管几行,最后数据分成2列,结果新生成一个数组 stock_change = stock_change.reshape([5, 4]) stock_change.reshape([-1, 2]) # resize,和reshape没什么区别,resize在原数组上修改 stock_change.resize([5, 4]) # 数组转置,获取数组几行几列元组 print(stock_change.T) print(stock_change.shape) print(stock_change.T.shape)数据类型修改
stock_change = np.random.normal(0, 1, (4, 5))
print(stock_change)
stock_change = stock_change.astype(np.int32)
print(stock_change)
print(stock_change.tostring())
stock_change2 = np.array([[1, 2, 3, 4, 5], [3, 4, 5, 6, 7]]) print(np.unique(stock_change2))运算 逻辑运算
stock_change = np.random.normal(0, 1, (8, 10)) stock_c = stock_change[0:5, 0:5] print(stock_c) print(stock_c>1)条件判断赋值
stock_c[stock_c>1] = 2
- np.any(stock_change>0) # 所有数据都大于0为真
- np.all(stock_change>0) # 只要有一个数据大于0就为真
- np.where(stock_change>0, 1, 0) # 大于0的数据赋值1,否则赋值0
- np.where(np.logical_and(stock_change>0.5, stock_change<1), 1, 0) # and运算
- np.where(np.logical_or(stock_change>0.5, stock_change<1), 1, 0) # or运算
- stock_change.max(axis=1) # axis=1行或axis=0列求最大数
- stock_change.argmax() # 求最大值的下票
- stock_change.argmax(axis=1) # 按行求最大值的下标
- stock_change.min(axis=1) # axis=1行或axis=0列求最小数
- stock_change.median() # 中位数
- stock_change.std() # 标准差
- stock_change.var() # 方差
- stock_change.mean() # 均值
- stock_change + 1
- stock_change / 1
- np.matmul(a, b) # 矩阵相乘,不支持矩阵和数字的相乘
- np.dot(a, b) # 矩阵相乘, dot和matmul没区别,只是dot(a, 10)可以用数字相乘



