numpy的学习-01

task01

  • 数据类型及数组创建

数据类型及数组创建

1.np.nan是一个空值,并且np.nan!=np.nan
2.np.isnan(x)用于判断x==nan? 返回值为boolean
3.正无穷大:np.inf 圆周率:np.pi 自然底数:np.e

4.对应类型为type,备注为dtype,另注:np.type返回的是数据结构的类型,np.dtype返回的是数据元素的类型,见下代码片段。
numpy的学习-01_第1张图片

a = np.dtype('b1')
print(a.type)  # <class 'numpy.bool_'>
print(a.itemsize)  # 1

import numpy as np
a=np.array([1,2,3])
print(a.dtype,type(a)) # int32  <class 'numpy.ndarray'>

5.np.iinfo(np.int32).min/max 查看int32类型的最小值/最大值
np.finfo(np.float64).bits/min/max/eps 查看float64类型的位数/最小值/最大值/非负最小值

6.np.datetime64的单位及其含义如下图
numpy的学习-01_第2张图片
创建对象,a=np.datetime64(“2020-10-20”,“D”),可进行单位规定,且在比大小时,大单位转小单位是安全的。
7.np.arange用于datetime表示 生成日期范围,常为左闭右开区间

print(np.arange("2020-10-20","2020-10-25",dtype=np.datetime64))
#['2020-10-20' '2020-10-21' '2020-10-22' '2020-10-23' '2020-10-24']

8.np.timedelta64是np.datetime64的时间差,也有单位。
9.np.datetime64可与python的datetime进行类型转换,

import numpy as np
import datetime

dt = datetime.datetime(year=2020, month=6, day=1, hour=20, minute=5, second=30)
dt64 = np.datetime64(dt, 's') # datetime转化为np.datetime64

dt2 = dt64.astype(datetime.datetime) # np.datetime64转化为datetime,astype用于改变数据元素的类型

10.创建数组


创建一维数组 np.array([0, 1, 2, 3, 4])
创建二维数组np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 35]])
 np.array和np.asarray都可将结构数据转化为ndrray

!原数据为x=ndarray时,y=np.array(x)会copy一份新的数据给y,但z=np.asarray(x)时z与x共享一份数据。
!原数据不为ndrray时,np.array/asarray都会copy一份新的数据,不共享。
11.fromfunction函数用于从函数中创建数组。
def fromfunction(function,shape,**kwargs)
两种形式的f:预定义或者lambda表达式

x = np.fromfunction(f, (5, 4), dtype=int)  //f=10*x+y
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]]

12.零填充:np.zeros(shape,dtype)
一填充:np.ones(shape,dtype)
空数组,即元素为随机数:np.empty(shape,dtype)
对角线为1,其余为0的数组:np.eye(n{单个数字表方阵,两个数字表二维数组},dtype)
对角线为1,其余为0的方阵:np.identity(n)
提取数组的对角线元素:np.diag(数组名,k=0/-1/1{哪条对角线})
构造对角数组:np.diag([对角元素])
常数数组:np.full(shape,fill_value,dtype)
返回给定间隔内的均匀间隔的值:np.arange([start,] stop[, step,],dtype])
返回指定间隔内的等间隔数字:np.linspace(start,stop,num个数)
返回一个由[0,1)内的随机数组成的数组:np.random.random(shape)
返回四舍五入后的值:np.around(数组名,保留几位小数{默认为0})
13.定义结构体的两种方式:
利用字典定义:

personType = np.dtype({
    'names': ['name1', 'age1', 'weight1'],
    'formats': ['U30', 'i8', 'f8']})

a = np.array([('Liming', 24, 63.9), ('Mike', 15, 67.), ('Jan', 34, 45.8)],
             dtype=personType)

利用多个元组的列表

personType = np.dtype([('name', 'U30'), ('age', 'i8'), ('weight', 'f8')])
a = np.array([('Liming', 24, 63.9), ('Mike', 15, 67.), ('Jan', 34, 45.8)],
             dtype=personType)

14.数组的属性:np.array.shape/dtype/size(元素个数)/ndim(几维)/itemsize(每个元素所占字节数)
!数组内元素必须为同一类型,否则会自动向下转换int->float->str

你可能感兴趣的:(自学,python,numpy)