numpy 应用于哪些
"""
NUMPY 用于科学计算,在pandas,sklearn,pytorch等的通用底层语言
如数组,矩阵,线代等等
核心为ndarray对象
属性包含这些
shape: 返回元祖 x.shape
ndim: 返回数字 维度的数目
size: 返回数字 数据中元素的数量
dtype: 元素类型
"""
numpy数组和python list区别
"""
numpy数组创建时固定大小,修改之后,将创建新的数组,并删除原来的数组
python原生list是动态变化
numpy数组中元素类型相同,如int全为int
python list 元素多种
两者可以转换
"""
创建
import numpy as np
res = np.array(
[[1, 2, 3],
[4, 5, 6]]
)
print(res)
print(res.ndim)
print(res.size)
print(res.shape)
print(res.dtype)
print(type(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)
'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函数
np.linspace(0, 2, 9)
res = np.linspace(0, 5, 5)
print("linspace函数")
print(res)
最大最小和
res = np.random.random(5)
print(res)
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)
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])
print(res[1, 2])
print(res.shape)
res[1, ...]
迭代
'第一个轴'
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)
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.])'