Numpy1_数据类型及数组创建_Datawhale十月组队学习

Numpy学习|数据类型及数组创建:


1.几个常量

np.nan:两个np.nan是不相等的
np.inf:表示无穷大
np.pi、np.e:圆周率和自然常数


2.数据类型

在这里插入图片描述
在这里插入图片描述

整数类型的机器限制:ii16 = np.iinfo(np.int)
数据类型对象的元素大小:arr.itemsize


3.时间日期和时间增量


(1)将字符串转换成时间日期类型 datetime64

#要用-相连接,月份前加0
a = np.datetime64('2020-02-03') 
a = np.datetime64('2020-03', 'D')#指定日期单位为天
np.arange('2020-02-03','2020-05-02',dtype = np.datetime64) #生成日期范围

(2)timedelta64 表示两个 datetime64 之间的差。timedelta64 也是带单位的,并且和相减运算中的两个 datetime64 中的较小的单位保持一致。
datatime64是带单位的日期时间类型

生成 timedelta64时,要注意年(‘Y’)和月(‘M’)这两个单位无法和其它单位进行运算(一年有几天?一个月有几个小时?这些都是不确定的)


(3)工作日的相关操作

#是否为工作日:
np.is_busday('2020-05-01')
#计算非0的数据
a=np.is_busday(np.arange(np.datetime64('2020-05-01'),np.datetime64('2020-06-01')))
np.count_nonzero(a) 

4.数组的创建

numpy 提供的最重要的数据结构是ndarray,它是 python 中list的扩展。
array()和asarray()的区别:当数据源是ndarray 时,array()仍然会 copy 出一个副本,占用新的内存,但不改变 dtype 时 asarray()不会。


(c)通过fromfunction()函数进行创建

#定义函数:
def f(x, y):
    return 10 * x + y

x = np.fromfunction(f, (5, 4), dtype=int)
print(x)
# [[ 0  1  2  3]
#  [10 11 12 13]
#  [20 21 22 23]
#  [30 31 32 33]
#  [40 41 42 43]]

x = np.fromfunction(lambda i, j: i == j, (3, 3), dtype=int)
print(x)
# [[ True False False]
#  [False  True False]
#  [False False  True]]

• arange()函数:返回给定间隔内的均匀间隔的值。
• linspace()函数:返回指定间隔内的等间隔数字。
• logspace()函数:返回数以对数刻度均匀分布。
• numpy.random.rand() 返回一个由[0,1)内的随机数组成的数组。


• ones()函数:返回给定形状和类型的1数组。 • ones_like()函数:返回与给定数组形状和类型相同的1数组

5.测验Test

0.3 == 3 * 0.1#输出为错误Flase

日期类型转化

#日期类型的转化:
import datetime
import numpy as np
dt64 = np.datetime64('2020-03-05 18:00:00')
dt = dt64.astype(datetime.datetime)

如何得到昨天,今天,明天的的日期
【知识点:时间日期】 (提示: np.datetime64, np.timedelta64)

yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today    = np.datetime64('today', 'D')
tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')

创建一个二维数组,其中边界值为1,其余值为0
【知识点:二维数组的创建】 (提示: array[1:-1, 1:-1])

Z = np.ones((10,10))
Z[1:-1,1:-1] = 0
print(Z)

创建长度为10的numpy数组,从5开始,在连续的数字之间的步长为3。
【知识点:数组的创建与属性】
如何在给定起始点、长度和步骤的情况下创建一个numpy数组序列?

import numpy as np

start = 5
step = 3
length = 10
a = np.arange(start, start + step * length, step)
print(a)  # [ 5 8 11 14 17 20 23 26 29 32]

将本地图像导入并将其转换为numpy数组。
【知识点:数组的创建与属性】
如何将图像转换为numpy数组?

import numpy as np
from PIL import Image

img1 = Image.open('test.jpg')
a = np.array(img1)

print(a.shape, a.dtype)
# (959, 959, 3) uint8

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Perley620

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值