首页 > 编程语言 > 详细

Python - numpy 模块

时间:2019-05-10 21:26:35      阅读:160      评论:0      收藏:0      [点我收藏+]

numpy

概述

?  Numerical Python. 补充了python所欠缺的数值计算能力

?  Numpy是其他数据分析及机器学习库的底层库

?  Numpy完全标准C语言实现,运行效率充分优化

?  Numpy开源免费

基本数据结构

类型名类型表示符
布尔类型 bool_
有符号整型 int8/16/32/64
无符号整型 uint8/16/32/64
浮点型 float16/32/64
复数型 complex64/128
字符串型 str_,每个字符32位Unicode

 

数组 -  nadarray 对象

概念

类似于列表, 可以多维嵌套, 但是要求必须内部存储相同类型的数据

即同质数组, 相同的数据类型的空间占用相同, 且查询方便

空间结构

ary = np.array([1, 2, 3, 4, 5])
"""         
           _______________________________________
a  ----->  | nadarray 对象                         |
           |                                      |
           | 元数据                                |
           |_______                               |                 
           |_dim___|                              |  
           |_dtype_|        _____________________ |
           |_data__|   ---> |_1_|_2_|_3_|_4_|_5_| | 
           |_shape_|  ---> (5,)                   |
           |_______|______________________________|

"""

 

元数据 (metadata)

存储对数组的描述信息, 如 : dim count, dtype, dara, shape 等

实际数据

完整的数组数据, 将实际数据与元数据分开存放

一方面提高了内存空间的使用效率

另一方面减少对实际数据的访问频率,提高性能。

创建语法

np.array([[], [], []])  # 直接创建

np.arange(0, 10, 1) # 序列创建

np.zeros(10) # 全 0 创建

np.ones(10) # 全 1 创建

np.zeros_like(ary) # 仿结构创建 全 0 数组

np.ones_like(ary) # 仿结构创建 全 1 数组

 

 

 

示例

 

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6])
print(a)  # [1 2 3 4 5 6]

b = np.arange(7, 13, 1)
print(b)  # [ 7  8  9 10 11 12]

c = np.zeros(6)
print(c)  # [ 0.  0.  0.  0.  0.  0.]

d = np.ones(6)
print(d)  # [ 1.  1.  1.  1.  1.  1.]
print(d / 2)  # [ 0.5  0.5  0.5  0.5  0.5  0.5]

e = np.array([[1, 2, 3], [4, 5, 6]])
print(np.ones_like(e))
"""
[[1 1 1]
 [1 1 1]]
"""

 

 

 

nadarray 对象属性基本操作

数组维度

ary.shape   数组维度

可以直接进行更改数组结构

但是更改需要合理, 比如 6 元素 更改为 3*3 需要9元素则无法满足从而报错

ary = np.array([1, 2, 3, 4, 5, 6])
print(ary, ary.shape)  # [1 2 3 4 5 6] (6,)
ary.shape = (2, 3) print(ary, ary.shape) """ [[1 2 3] [4 5 6]] (2, 3) """ print(ary[1][1]) # 5

 

元素类型

ary.dtype  数组元素类型

ary.astype  修改元素类型

数据类型直接更改是不可取的, 需要使用 astype 方法进行更改

利用重新开辟新的空间来赋值存储

即此方法不会改变原值, 需要用返回值进行复制

# 数组元素类型
ary = np.array([1, 2, 3, 4, 5, 6])
print(ary, ary.dtype)  # [1 2 3 4 5 6] int32
# ary.dtype = np.int64 # print(ary, ary.dtype)
# 更改数据类型 b = ary.astype(float32) print(ary, ary.dtype) # [1 2 3 4 5 6] int32 print(b, b.dtype) # [ 8.58993459e+09 1.71798692e+10 2.57698038e+10] float32

 

数组元素个数

ary.size  返回数组元素个数

len(ary)  返回数组元素个数

ary = np.array([1, 2, 3, 4, 5, 6])
print(ary.size)  # 6
print(len(ary))  # 6

数组元素索引

下标

# 数组元素的索引
ary = np.arange(1, 9)
ary.shape = (2, 2, 2)
print(ary, ary.shape)
"""
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]] (2, 2, 2)
"""

print(ary[0])  # 0页数据
"""
[[1 2]
 [3 4]]
"""

print(ary[0][0])  # 0页0行数据
"""
[1 2]
"""

print(ary[0][0][0])  # 0页0行0列数据
"""
1
"""

print(ary[0, 0, 0])  # 0页0行0列数据
"""
1
"""


# 使用for循环,把ary数组中的元素都遍历出来。
for i in range(ary.shape[0]):
    for j in range(ary.shape[1]):
        for k in range(ary.shape[2]):
            print(ary[i, j, k], end= )

# 1 2 3 4 5 6 7 8 

数组运算

遍历所有的元素进行运算

# ary = np.array([1, 2, 3, 4, 5])
print(ary + 2)  # [3 4 5 6 7]
print(ary + ary)  # [ 2  4  6  8 10]
print(ary * ary)  # [ 1  4  9 16 25]

 

 

数组比较

遍历所有元素进行比较

# ary = np.array([1, 2, 3, 4, 5])
print(ary > 3)  # [False False False  True  True]

 

 

 

Python - numpy 模块

原文:https://www.cnblogs.com/shijieli/p/10846772.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!