美文网首页
ndarray数组创建

ndarray数组创建

作者: 12plus12 | 来源:发表于2018-12-12 16:15 被阅读0次

数值计算库-Numpy的作用:

  • Numpy用于在大型、多维数组(矩阵)上执行数值运算
  • Numpy是Scipy/Pandas/scikit-learn等科学计算、数据分析、机器学习库的基础库,也是Python数据挖掘的基础

创建ndarray数组

import numpy as np
# 基本格式:alist = np.array(list/tuple)
alist = np.array([1,2,3])    # [1 2 3]
常见dtype类型
参数 解释
np.bool 布尔值
np.int 整型
np.float 浮点型
np.unicode_ 字符串
# 可以在创造数组时指定dtype类型
alist = np.array([1,2,3], dtype=np.unicode_)  # ['1' '2' '3']
ndarray数组对象属性
参数 解释
.dtype 对象元素类型
.size 对象元素的个数,相当于.shape中的n*m的值
.shape 轴,数组形状,对于矩阵,n行m列(不太理解
.ndim 秩,数据维度
import numpy as np

# 0维数据
a0 = np.array(5)
print(a0, a0.ndim, a0.shape)
print("*"*20)
# 1维数据
a1 = np.array([1,2])
print(a1, a1.ndim, a1.shape)
print("*"*20)
# 2维数据
a2 = np.array([
    [1,2],
    [3,4]
])
print(a2, a2.ndim, a2.shape)
print("*"*20)
# 3维数据
a3 = np.array([
    [
        ["小明", 90, 'male'],
        ["张三", 60, "female"]
    ],
    [
        ["小明", 91, 'female'],
        ["张三", 90, "female"]
    ]
])
print(a3, a3.ndim, a3.shape)

"""
results:
5 0 ()
********************
[1 2] 1 (2,)
********************
[[1 2]
 [3 4]] 2 (2, 2)
********************
[[['小明' '90' 'male']
  ['张三' '60' 'female']]

 [['小明' '91' 'female']
  ['张三' '90' 'female']]] 3 (2, 2, 3)
"""
Numpy函数快速构造大数组(除arange外都是生成的浮点型)
  1. np.arange(n)

>>>np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

  1. np.linspace()
    根据起止数据等间距填充数据形成数组

>>>np.linspace(1,2,3) #3表示含3个元素
array([1. , 1.5, 2. ])
>>>np.linspace(1,2,3, endpoint=False) # endpoint表示生成的n个元素中是否包含终止元素
array([1. , 1.33333333, 1.66666667])

  1. full(shape, val)和full_like(alist, val)
    根据格式生成数组

>>>alist
array([[1, 2],
[3, 4]])
>>>np.full(alist.shape, 'fu')
array([['fu', 'fu'],
['fu', 'fu']], dtype='<U2')
>>>np.full_like(alist, 100)
array([[100, 100],
[100, 100]])
>>>np.full_like(alist, 'bin') # 原格式为数字类型用full_like,要求val一定要能被int()强转
ValueError: invalid literal for int() with base 10: 'bin'

  1. np.ones(shape)和np.ones_like(ndarray)
    用法与full和full_like相似,不需传val,生成的是浮点型的1组成的相同格式数组
  2. np.zeros(shape)和np.zeros_like(ndarray)
    与上面的类似
  3. np.empty(shape)和np.empty_like(ndarray)
    与上面的类似,创建新数组只分配内存空间,随意填充一些垃圾值
  4. np.eye(n)和np.identity(n)
    这两个函数作用相同,创建一个正方的n*n单位矩阵,对角线为1,其余为0

>>>np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>>np.identity(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])

  1. np.diag(list)
    创建一个正方形矩阵,对角线为参数值,其余为0

>>>np.diag([1,2,3,4,5])
array([[1, 0, 0, 0, 0],
[0, 2, 0, 0, 0],
[0, 0, 3, 0, 0],
[0, 0, 0, 4, 0],
[0, 0, 0, 0, 5]])

使用Numpy随机数创建特定数组
参数 解释
.rand(d0,d1,..dn) 创建d0-dn维度的均匀分布的随机数数组,浮点数,范围从0-1
.uniform(low,high,(size)) 产生具有均匀分布的数组,low起始值,high结束值,size形状
.randint(low,high,(shape)) 从给定上下限范围选取随机数整数,范围是low,high,形状是shape
.seed(s) 随机数种子,s是给定的种子值。因为计算机生成的是伪随机数,所以通过设定相同的随机数种子,可以每次生成相同的随机数
.randn(d0,d1,..dn) 创建d0-dn维度的标准正态分布随机数,浮点数,平均数0,标准差1
.normal(loc,scale,(size)) 从指定正态分布中随机抽取样本,分布中心是loc(概率分布的均值),标准差是scale,形状是size
# .rand()  ---给定维度,生成的是浮点数
>>>np.random.rand(10)
array([0.96423391, 0.25408991, 0.20234839, 0.26309569, 0.3290563 ,
       0.00834656, 0.43434389, 0.37981102, 0.12284219, 0.68015647])
>>>np.random.rand(2,3,4)
array([[[0.73811912, 0.58949586, 0.1477269 , 0.6509711 ],
        [0.63117018, 0.69076537, 0.33748225, 0.29992466],
        [0.35725206, 0.8762082 , 0.07229357, 0.74835445]],
       [[0.95250543, 0.28038204, 0.79859217, 0.92027231],
        [0.34419883, 0.02446916, 0.61344213, 0.00426297],
        [0.25359085, 0.36004407, 0.2994331 , 0.3554107 ]]])

# .uniform()  ---给定起始、结束、维度,生成的是浮点数
>>> np.random.uniform()
0.8525657129519096
>>> np.random.uniform(0,100)
98.5227237621942
>>> np.random.uniform(0,100,(3,4))
array([[79.54695296, 81.12288668, 49.82092111,  3.61948147],
       [87.84763286, 14.1434305 , 74.09872995, 59.05728427],
       [42.39094208, 99.49815838, 95.24305138, 49.42416064]])
"""这个结果看不太明白"""
>>> np.random.uniform((2,3,100,500))
array([  1.86576847,   1.27743245,  76.32458977, 214.40451151])

# .randint()  ---给定范围,维度,生成的是整数
>>> np.random.randint(100)
30
>>> np.random.randint(100,200)
111
>>> np.random.randint(100,200,(3,4,5))
array([[[135, 160, 180, 120, 113],
        [176, 142, 135, 168, 187],
        [165, 143, 191, 185, 190],
        [144, 116, 171, 164, 101]],

       [[136, 156, 199, 155, 151],
        [110, 111, 116, 138, 174],
        [151, 185, 193, 116, 138],
        [171, 181, 195, 150, 143]],

       [[130, 138, 173, 177, 113],
        [111, 199, 170, 104, 140],
        [172, 183, 155, 108, 101],
        [168, 198, 193, 134, 112]]])

# .seed()  ---设定随机数种子
>>> np.random.seed(10)
>>> np.random.rand(1,2,3)  # 第一次
array([[[0.77132064, 0.02075195, 0.63364823],
        [0.74880388, 0.49850701, 0.22479665]]])
>>> np.random.seed(10)
>>> np.random.rand(1,2,3)  # 第二次
array([[[0.77132064, 0.02075195, 0.63364823],
        [0.74880388, 0.49850701, 0.22479665]]])

# .randn()  ---给定维度,标准正态分布(均值0,标准差1)
>>> np.random.randn(1,2,3)
array([[[-0.08112218, -0.52929608,  1.04618286],
        [-1.41855603, -0.36249918, -0.12190569]]])

# .normal()  ---给定均值/标准差/维度的正态分布
>>> np.random.normal(1.75, 0.2, (2,3))
array([[1.5048328 , 1.70564137, 2.01798526],
       [1.75586194, 2.14707715, 2.03943312]])
# 限制生成的正态分布数组值在一定范围内
>>> z = np.random.normal(1.75, 0.2, 5)
>>> z
array([1.69247412, 1.47813789, 1.74039173, 1.65384253, 1.82555062])
>>> z[(z <= 1.77) & (z >= 1.73)]
array([1.74039173])
>>> z[(z <= 1.77) & (z >= 1.73)].shape
(1,)

# .round()  ---结果四舍五入
>>> np.round(np.random.rand(2,3,4), 2)
array([[[0.51, 0.89, 0.3 , 0.4 ],
        [0.79, 0.41, 0.18, 0.84],
        [0.57, 0.06, 0.99, 0.23]],

       [[0.61, 0.37, 0.8 , 0.63],
        [0.82, 0.29, 0.27, 0.6 ],
        [0.94, 0.71, 0.26, 0.12]]])

相关文章

  • 3.2Python数据处理篇之Numpy系列(二)--- nda

    [TOC] 目录:1.ndarray数组的创建2.ndarray数组的变换 (一)ndarray数组的创建 1.从...

  • ndarray数组的创建和变换

    (一)ndarray数组的创建方法 从Python中的列表、元组等类型创建ndarray数组 使用NumPy中函数...

  • python基础 numpy库

    ndarray数组的创建方法: 1.从python中的列表、元组等类型创建ndarray数组:x=np.array...

  • numpy_1

    ndaray 随机创建 ndarray的序列创建 ndarray 的arange 和 reshape 数组的数据类...

  • NumPy 基础:数组和矢量计算

    NumPy 基础:数组和矢量计算 NumPy 的 ndarray : 一种多维数组对象 创建ndarray 数组创...

  • Numpy-创建数据

    创建数据 创建ndarray NumPy的数组类被称作ndarray。通常被称作数组。 Numpy库中的矩阵模块为...

  • numpy

    1.ndarray 多维数组对象 同构类型。 1.1 创建ndarray 1.2 ndarray 数据类型 1.3...

  • ndarray数组创建

    数值计算库-Numpy的作用: Numpy用于在大型、多维数组(矩阵)上执行数值运算 Numpy是Scipy/Pa...

  • Python数据分析:Numpy学习笔记

    Numpy学习笔记 ndarray多维数组 创建 数组创建函数 arange ones/ones_like zer...

  • NumPy--ndarray 的创建和各种数据类型

    ndarray 的创建和各种数据类型 创建 由一维数组创建 多维数组内存结构 普通二维数组创建 zeros emp...

网友评论

      本文标题:ndarray数组创建

      本文链接:https://www.haomeiwen.com/subject/oaiuhqtx.html