【numpy一篇就够了】

生成数组声明的方式

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.float32

ndarray的属性

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
在这里插入图片描述

其它运算

  1. np.any(stock_change>0) # 所有数据都大于0为真
  2. np.all(stock_change>0) # 只要有一个数据大于0就为真
  3. np.where(stock_change>0, 1, 0) # 大于0的数据赋值1,否则赋值0
  4. np.where(np.logical_and(stock_change>0.5, stock_change<1), 1, 0) # and运算
  5. np.where(np.logical_or(stock_change>0.5, stock_change<1), 1, 0) # or运算
  6. stock_change.max(axis=1) # axis=1行或axis=0列求最大数
  7. stock_change.argmax() # 求最大值的下票
  8. stock_change.argmax(axis=1) # 按行求最大值的下标
  9. stock_change.min(axis=1) # axis=1行或axis=0列求最小数
  10. stock_change.median() # 中位数
  11. stock_change.std() # 标准差
  12. stock_change.var() # 方差
  13. stock_change.mean() # 均值

矩阵运算

  1. stock_change + 1
  2. stock_change / 1
  3. np.matmul(a, b) # 矩阵相乘,不支持矩阵和数字的相乘
  4. np.dot(a, b) # 矩阵相乘, dot和matmul没区别,只是dot(a, 10)可以用数字相乘
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值