作者: xiaoman
2022-01-02
numpy.arange(start, stop, step, dtype)
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
np.zeros(6) # 默认是浮点型
np.ones((3, 2)) # 三行两列
np.random.rand(5) # 返回服从01分布的5个数
np.random.randn(5)
np.random.normal(4, 2, (3,3))
array([[ 5.53705005, 1.95477989, 3.07768639],
[ 4.15457427, 3.69587242, 3.18715934],
[ 5.46093734, 6.60888084, -0.55980278]])
np.full((2, 2), 3)
np.eye(5)
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
np.diag([1, 2, 3])
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
e = [[2,1,3],[4,3,2]]
np.array(e)
array([[2, 1, 3],
[4, 3, 2]])
np.ones_like(e)
np.zeros_like(e)
np.full_like(e,5)
a1 = np.random.rand(2, 3)
a1
array([[0.56262855, 0.73129141, 0.86289312],
[0.93186546, 0.93884182, 0.22485166]])
a1.flatten().shape
(6,)
a1
array([[0.56262855, 0.73129141, 0.86289312],
[0.93186546, 0.93884182, 0.22485166]])
a1.T # 就类似于矩阵的转置
array([[0.56262855, 0.93186546],
[0.73129141, 0.93884182],
[0.86289312, 0.22485166]])
a1 = np.array([[1, 2], [3, 4]])
a2 = np.array([[5, 6], [7, 8]])
(array([[1, 2],
[3, 4]]),
array([[5, 6],
[7, 8]]))
np.vstack([a1, a2]) # 需要输入一个序列
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
np.hstack([a1, a2])
array([[1, 2, 5, 6],
[3, 4, 7, 8]])
当然,有拼接就有切分。接下来,简单看下数组的切分方法。拼接时关键字是stack
,切分时关键字是split
a = np.arange(24).reshape(3,8) # 创建3行8列的二维数组
a
array([[ 0, 1, 2, 3, 4, 5, 6, 7],
[ 8, 9, 10, 11, 12, 13, 14, 15],
[16, 17, 18, 19, 20, 21, 22, 23]])
# 当第二个参数只输入一个数时,是进行等分
np.hsplit(a,2)
[array([[ 0, 1, 2, 3],
[ 8, 9, 10, 11],
[16, 17, 18, 19]]),
array([[ 4, 5, 6, 7],
[12, 13, 14, 15],
[20, 21, 22, 23]])]
# 无法等分的情况会报错
np.hsplit(a,3)
# 当第二个参数输入一个序列时,则是根据列标进行切分
np.hsplit(a,(1,2,3)) # 第一列、第二列、第三列后进行切分
[array([[ 0],
[ 8],
[16]]),
array([[ 1],
[ 9],
[17]]),
array([[ 2],
[10],
[18]]),
array([[ 3, 4, 5, 6, 7],
[11, 12, 13, 14, 15],
[19, 20, 21, 22, 23]])]
- vsplit:上下切分
```python
np.vsplit(a,3) # 三等分
[array([[0, 1, 2, 3, 4, 5, 6, 7]]),
array([[ 8, 9, 10, 11, 12, 13, 14, 15]]),
array([[16, 17, 18, 19, 20, 21, 22, 23]])]
# 均分
np.array_split(a, 2, axis=1) # axis = 1,左右切分
[array([[ 0, 1, 2, 3],
[ 8, 9, 10, 11],
[16, 17, 18, 19]]),
array([[ 4, 5, 6, 7],
[12, 13, 14, 15],
[20, 21, 22, 23]])]
# 根据列标进行切分
np.array_split(a, (1, ), axis=1)
[array([[ 0],
[ 8],
[16]]),
array([[ 1, 2, 3, 4, 5, 6, 7],
[ 9, 10, 11, 12, 13, 14, 15],
[17, 18, 19, 20, 21, 22, 23]])]
# 均分
np.array_split(a, 3, axis=0) # axis = 0,上下切分
[array([[0, 1, 2, 3, 4, 5, 6, 7]]),
array([[ 8, 9, 10, 11, 12, 13, 14, 15]]),
array([[16, 17, 18, 19, 20, 21, 22, 23]])]
# 根据行标进行切分
np.array_split(a, (1, ), axis=0)
[array([[0, 1, 2, 3, 4, 5, 6, 7]]),
array([[ 8, 9, 10, 11, 12, 13, 14, 15],
[16, 17, 18, 19, 20, 21, 22, 23]])]
数学运算函数 | 描述 |
---|---|
np.add(x1,x2 ) | 按元素添加参数,等效于 x1 + x2 |
np.subtract(x1,x2) | 按元素方式减去参数,等效于x1 - x2 |
np.multiply(x1,x2) | 逐元素乘法参数,等效于x1 * x2 |
np.divide(x1,x2) | 逐元素除以参数,等效于x1 / x2 |
np.exp(x) | 计算e的x次方。 |
np.exp2(x) | 计算2的x次方。 |
np.power(x1,x2) | 计算x1的x2次幂。 |
np.mod(x) | 返回输入数组中相应元素的除法余数. |
np.log(x) | 自然对数,逐元素。 |
np.log2(x) | x的基础2对数。 |
np.log10(x) | 以元素为单位返回输入数组的基数10的对数。 |
np.expm1(x) | 对数组中的所有元素计算exp(x) - 1 |
np.log1p(x) | 返回一个加自然对数的输入数组。 |
np.sqrt(x) | 按元素方式返回数组的正平方根。 |
np.square(x) | 返回输入的元素平方。 |
np.sin(x) | 三角正弦。 |
np.cos(x) | 元素余弦。 |
np.tan(x) | 逐元素计算切线。 |
np.round(x) | 四舍五入 |
np.floor(x) | 向下取整 |
np.ceil(x) | 向上取整 |
数组的统计运算 | |
NumPy有很多有用的统计函数,用于从数组中给定的元素中查找最小,最大,百分标准差和方差等。 | |
常用统计函数: |
函数名称 | NaN安全版本 | 描述 |
---|---|---|
np.sum() | np.nansum() | 计算元素的和 |
np.min() | np.nanmin() | 找出最小值 |
np.max() | np.nanmax() | 找出最大值 |
np.prod() | np.nanprod() | 计算元素的积 |
np.ptp() | N/A | 计算元素的极差(最大值 - 最小值) |
np.mean() | np.nanmean() | 计算元素的算术平均值 |
np.std() | np.nanstd() | 计算标准差 |
np.var() | np.nanvar() | 计算方差 |
np.percentile() | np.nanpercentile() | 计算百分位数 |
np.median() | np.nanmedian() | 计算中位数 |
np.average() | N/A | 返回数组的加权平均值 |
np.any() | N/A | 验证任何一个元素是否为真 |
np.all() | N/A | 验证所有元素是否为真 |
NumPy拥有numpy.linalg 模块,提供线性代数所需的所有功能。
df = pd.DataFrame(data=None,
index=None,
columns=None,
dtype=None,
copy=False
)
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([2, 3, 4], index=['b', 'c', 'd'])
df = pd.DataFrame([s1, s2])
l = [[1, 2, 3], [2, 3, 4]]
pd.DataFrame(a)
d1 = {'a':range(3),'b':range(3),'c':range(3)}
pd.DataFrame(d1)
在创建过程中,字典的Key会编程column名称,并且系统会自动生成index.