python进阶学习日志(一)——Numpy库(1)

本文为大一人工智能专业学生,本文仅为个人学习路线的记录,如有问题或疏漏,欢迎指正!如有侵权请联系我个人微信:GZE08_myh

  1. 1Numpy安装

安装numpy:

pip install numpy # 从国外官网下载最新版本的numpy

pip install numpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com # 指定从国内源(豆瓣源)下载 这个速度比较快

pip install D:\python\numpy-1.19.5-cp36-cp36m-win_amd64.whl # 指定从本地库安装

  1. 2ndarray对象

1、创建多维数组

import numpy as np
print('一维数组')
a = np.array([1,2,3]) # 一维数组
print(a) # [1 2 3]
print(type(a)) # <class 'numpy.ndarray'>
print('二维数组')
a = np.array([[1,2],
[3,4],
[5,6]]) # 二维数组
print(a)
# [[1 2]
# [3 4]
# [5 6]]
print(type(a)) # <class 'numpy.ndarray'>
print('三维数组')
a = np.array([[[1,2],
[3,4]],
[[5,6],
[7,8]]])
print(a)
# [[[1 2]
# [3 4]]
# 
# [[5 6]
# [7 8]]]

2、通过dtype参数指定数据类型

a = np.array([1,2,3])
print(a) # [1 2 3]
a = np.array([1,2,3], dtype='float')
print(a) # [1. 2. 3.]
a = np.array([1,2,3], dtype='complex')
print(a) # [1.+0.j 2.+0.j 3.+0.j]
a = np.array([1,2,3], dtype='bool')
print(a) # [ True True True]

3、ndim 维度个数和shape 形状

a = np.array([1,2,3])
print(a.ndim) # 1
print(a.shape) # (3,)
a = np.array([[1,2],
[3,4],
[5,6]]) # 二维数组
print(a.ndim) # 2
print(a.shape) # (3,2) 3行2列
a = np.array([[[1,2],
[3,4]],
[[5,6],
[7,8]]])
print(a.ndim) # 3
print(a.shape) # (2,2,2)

1.3 Numpy的数据类型

Python的数值类型:

number(bool、int、float、complex)

Numpy的数据类型:

Numpy的数据类型:

bool:布尔

intc:C语言的整型

intp:Python的整型

int8:8位整型(-128 ~ 127)

int16:16位整型

int32:32位整型

int64:64整型

uint8:无符号8位整型(0~255)

uint16:无符号16位整型

uint32:无符号32位整型

uint64:无符号64位整型

float:浮点型

float16:半精度浮点数

float32:全精度浮点数

float64:双精度浮点数

complex:复数

complex64:实部32位,虚部32位

complex128:实部64位,虚部64位

通过dtype()查看数据类型:

import numpy as np
dt = np.dtype(np.int32)
print(dt) # int32
a = np.array([1,2,3], dtype='float32')
print(a) # [1. 2. 3.]

  1. 4Numpy数组属性

秩:numpy中的维度。通过ndim属性来查看

形状:每个维度的大小。通过shape属性来查看

改变形状:通过reshape()函数来调整

import numpy as np
a = np.array([[1,2],
[3,4],
[5,6]])
print(a.shape) # (3, 2) 3行2列
print(a)
# [[1 2]
# [3 4]
# [5 6]]
b = a.reshape(2,3)
print(b.shape) # (2, 3) 2行3列
print(b)
# [[1 2 3]
# [4 5 6]]

如果不确定其中一个维度的大小是多少,可以使用 -1 来代替,

程序会自动进行计算,计算该值实际上是多少

  1. 5Numpy数组属性

numpy.empty() 创建空的指定形状的数组

# 创建空数组
a = np.empty([3,2])
print(a)
# [[6.23042070e-307 3.56043053e-307]
# [1.37961641e-306 2.22518251e-306]
# [1.33511969e-306 1.24610383e-306]]

numpy.zeros() 创建指定形状的数组,且数组中的元素全部为0

numpy.ones() 创建指定形状的数组,且数组中的元素全部为1

  1. 6Numpy数组属性

numpy.asarray()

根据已有的数组拷贝创建新数组

import numpy as np
x = [1,2,3]
a = np.asarray(x)
print(a) # [1 2 3]
x[2] = 4 # 对原来的数组做了修改并不会影响拷贝后的数组
print(x) # [1, 2, 4]
print(a) # [1 2 3]

numpy.frombuffer()

实现动态数组(拷贝二进制数据)

s = b'hello' # 二进制数据
print(type(s)) # <class 'bytes'>
a = np.frombuffer(s, dtype='S1')
print(a) # [b'h' b'e' b'l' b'l' b'o']

numpy.fromiter()

从迭代对象(列表、元组、集合、迭代器)中读取数据

list1 = [1,3,5,7,9]
it = iter(list1) # 根据列表创建迭代对象
a = np.fromiter(it, dtype='int32')
print(a) # [1 3 5 7 9]

  1. 7从数值范围创建数组

numpy.arange() 创建数值范围

import numpy as np
a = np.arange(5)
print(a) # [0 1 2 3 4]
a = np.arange(2, 10)
print(a) # [2 3 4 5 6 7 8 9]
a = np.arange(2, 10, 2)
print(a) # [2 4 6 8]

numpy.linspace() 创建等差数列

# 创建等差数列 从4开始到8结束 总共5个数 包含开始位置也包含结束位置(8) 数据类型为float32
a = np.linspace(4, 8, 5, dtype='float32')
print(a) # [4. 5. 6. 7. 8.]
# 创建等差数列 从4开始到8结束 总共5个数 包含开始位置不包含结束位置(8) 数据类型为float32
a = np.linspace(4, 8, 5, dtype='float32', endpoint=False)
print(a) # [4. 4.8 5.6 6.4 7.2]

numpy.logspace() 创建等比数列

# 创建等比数列 从10的1次幂开始到10的5次幂结束 包含开始位置也包含结束位置 数据类型为int32
a = np.logspace(1, 5, 5, dtype='int32')
print(a) # [ 10 100 1000 10000 100000]

  1. 8切片和索引

a = np.arange(10)
print(a) # [0 1 2 3 4 5 6 7 8 9]
s = slice(3,8,2)
b = a[s]
print(b) # [3 5 7]


a = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
print(a)
# 取所有的行所有列
s = a[:,:]
print(s)
# 取所有行 第1列的数据
s = a[:, 1]
print(s) # [2 5 8]
# 取第1行 第1列的数据
s = a[1,1]
print(s) # 5
# 取第0行到第2行(不包含第2行) 第1列的数据

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值