P高阶_(numpy入门)

numpy 应用于哪些

# !/usr/bin/python
# -*- coding: utf-8 -*-
"""
NUMPY 用于科学计算,在pandas,sklearn,pytorch等的通用底层语言
如数组,矩阵,线代等等

核心为ndarray对象
属性包含这些
shape: 返回元祖 x.shape
ndim:  返回数字 维度的数目
size:  返回数字 数据中元素的数量
dtype: 元素类型
"""

numpy数组和python list区别

"""
numpy数组创建时固定大小,修改之后,将创建新的数组,并删除原来的数组
python原生list是动态变化
numpy数组中元素类型相同,如int全为int
python list 元素多种
两者可以转换
"""

创建

# python  list 转换到numpy
# np.array(list)
import numpy as np

res = np.array(
    [[1, 2, 3],
     [4, 5, 6]]
)

print(res)
print(res.ndim)  # 2  维度的数目,几维
print(res.size)  # 6
print(res.shape)  # (2,3)
print(res.dtype)  # int32
print(type(res))  # print(res)

'如果类型不一样,就取最前面的'
res = np.array([5.14, 4, 2, 3])
"array([ 5.14, 4. , 2. , 3. ])"

创建多维数组

# 嵌套列表构成的多维数组
res = np.array([range(i, i + 3) for i in [2, 4, 6]])
print("嵌套创建")
print(res)
"""
array([[2, 3, 4],
[4, 5, 6],
[6, 7, 8]])
"""

"""
[[2 3 4]
 [4 5 6]
 [6 7 8]]
"""

'arange函数'
'创建列表'
res = np.arange(10, 30, 5)
print(res)  # [10 15 20 25]

'reshape函数'
'改变数组的形状,将[0,1,2,3] 修改为[[0,1][2,3]]'
res = np.arange(4).reshape(2, 2)
print('改变数组的形状')
print(res)
"""
[[0 1]
 [2 3]]
"""

运算

res = np.array([20, 30, 40, 50]) - np.arange(4)
'array([20, 29, 38, 47])'

矩阵相乘

res = np.array([[1, 1], [0, 1]]).dot(np.array([[2, 0], [3, 4]]))

linspace函数

# 从0到2,取9个数值
np.linspace(0, 2, 9)
res = np.linspace(0, 5, 5)
print("linspace函数")
print(res)  # [0.   1.25 2.5  3.75 5.  ]

最大最小和

res = np.random.random(5)
print(res)  # [0.08542799 0.53819101 0.71547906 0.58130932 0.10429059]
res.sum()
res.min()
res.max()

res = np.arange(12).reshape(3, 4)
"""
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
"""
res.sum(axis=0)
"""
array([12, 15, 18, 21])

"""
res.sum(axis=1)
"""
array([0, 4, 8])
"""

同列表,索引,切片

res = np.arange(3) ** 3
print(res)  # [0 1 8]
var = res[2]
res = res[0:2]

多维

res = np.array([range(i, i + 3) for i in [2, 3, 4]])
print("多维")
print(res)
"""[[2 3 4]
 [3 4 5]
 [4 5 6]]"""
print(res[1])  # [3,4,5]
print(res[1, 2])  # 5
print(res.shape)  # (3, 3)

res[1, ...]  # [3 4 5]

迭代

'第一个轴'
for i in res:
    pass

'全部的话'
for i in res.flat:
    pass

形状操作

res = np.array([range(i, i + 6) for i in [1, 2, 3]])
res1 = res.ravel()
print(res1)  # [1 2 3 4 5 6 2 3 4 5 6 7 3 4 5 6 7 8]
res2 = res.reshape(6, 3)

"""
[[1 2 3]
 [4 5 6]
 [2 3 4]
 [5 6 7]
 [3 4 5]
 [6 7 8]]
"""
res.resize((3, 6))
print("resize修改原来的值")
print(res)
"""
[[1 2 3 4 5 6]
 [2 3 4 5 6 7]
 [3 4 5 6 7 8]]
"""

其他

res = np.arange(5)
res[[1, 3, 4]] = 0
'array([0, 0, 2, 0, 0])'
res = np.arange(5)
'当索引列表包含重复时,分配会多次完成,留下最后一个值'
res[[0, 0, 2]] = [1, 2, 3]
'array([2, 1, 3, 3, 4])'

res = np.arange(4)
res1 = res > 3
'[False False False False]'

广播

# 算术运算期间处理具有不同形状的数组 小的数组在大的数组上广播
np.array([1.0, 2.0, 3.0]) * np.array([2.0, 2.0, 2.0])
'array([ 2.,  4.,  6.])'
np.array([1.0, 2.0, 3.0]) * 2.0
'array([ 2.,  4.,  6.])'

你可能感兴趣的:(Python,#,P高级,numpy,python,机器学习)