数据盲目分析(一)——numpy简单回顾(上)

这是我参与更文挑战的第1天,活动详情查看:更文挑战

本系列文章目前计划是先更新pandas,期间会有些具体的案例会一起讲解。
pandas之后应该会将sql和pandas两个技术做个比较。

然而在本节,我们先回顾下常用的numpy。之后的代码会用到。

1. numpy的生成

  • 最简单的方式——直接指定值
import numpy as np
np.array([1, 2, 3])
复制代码

输出:array([1, 2, 3])

  • 生成等差序列

    • 包含终止项

np.linspace(1,5,3) # 起始、终止、数组长度
复制代码

输出:array([1., 3., 5.])

注意:这里面虽然恰好都是整数,但会被转化为浮点数。

    • 不包含终止项
np.arange(1,5,2) # 起始、终止、数组长度
复制代码

输出:array([1, 3])

2. 特殊矩阵

  • np.zeros 生成都是0的矩阵(用的可能不多)

  • np.eye(3) 生成3行3列的单位矩阵

  • 填充矩阵

np.full((6,5), 10)
复制代码

截屏2021-06-01 上午11.40.46.png

np.full((6,5), [1, 2, 3])

复制代码

截屏2021-06-01 上午11.41.53.png

np.full((6,5), [1, 2, 3, 4, 5])
复制代码

截屏2021-06-01 上午11.42.35.png

综上所述:np.full函数根据列值进行填充,如果两个参数列值不相等,那么除非第二个参数列值为1,否则均不可填充

3. 数组的变形与合并

  • 数组的转置
import numpy as np
arr = np.full((6, 5), [1, 2, 3, 4, 5])
print(arr)
arr.T
复制代码
// 输出为
[[1 2 3 4 5]
 [1 2 3 4 5]
 [1 2 3 4 5]
 [1 2 3 4 5]
 [1 2 3 4 5]
 [1 2 3 4 5]]
array([[1, 1, 1, 1, 1, 1],
       [2, 2, 2, 2, 2, 2],
       [3, 3, 3, 3, 3, 3],
       [4, 4, 4, 4, 4, 4],
       [5, 5, 5, 5, 5, 5]])
复制代码
  • 数组的合并 np.r_ , np.c_
import numpy as np

print(np.r_[np.array([0,0]),np.zeros(2)])
print(np.c_[np.array([1,2]),np.zeros(2)])

print(np.r_[np.array([[0,0],[1,1]]),np.array([[2,2],[3,3]])])
复制代码

请看以上代码,输出为:

[0. 0. 0. 0.]
[[1. 0.]
 [2. 0.]]
[[0 0]
 [1 1]
 [2 2]
 [3 3]]
复制代码

那么很明显,为什么输出的规则不一致呢,对于一维数组,np.r_和np.c_的合并规则好像反了过来,经过反复验证和百度(其实重点是百度),发现是由于numpy存一维数组时会将其以列向量的方式存储。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享