python基础

这篇博客介绍了Python中的数组创建,包括常量、数组类型、时间日期和时间增量。详细阐述了如何使用numpy创建不同类型的数组,如布尔、整型、浮点型、字符串等,以及如何进行日期时间的转换和运算。还提到了创建数组的方法,如array()、asarray()、fromfunction(),以及zeros()、ones()、empty()、eye()等函数的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 创建数组

(1)常量
空值:nan = NaN = NAN
正无穷大:Inf = inf = infty = Infinity = PINF
圆周率:pi = 3.1415926535897932384626433…
e表示自然常数:e = 2.718281828459045235360…
(2)数组类型
常用 numpy 基本类型
bool_= bool8 8位 布尔类型
int8 = byte 8位 整型
int16 = short 16位 整型
int32 = intc 32位 整型
int_ = int64 = long = int0 = intp 64位 整型
uint8 = ubyte 8位 无符号整型
uint16 = ushort 16位 无符号整型
uint32 = uintc 32位 无符号整型
uint64 = uintp = uint0 = uint 64位 无符号整型
float16 = half 16位 浮点型
float32 = single 32位 浮点型
float_ = float64 = double 64位 浮点型
str_ = unicode_ = str0 = unicode Unicode 字符串
datetime64 日期时间类型
timedelta64 表示两个时间之间的间隔
创建数组类型


class dtype(object): 
    def __init__(self, obj, align=False, copy=False): 
         pass 

例:import numpy as np a = np.dtype('b1') print(a.type) # <class 'numpy.bool_'> print(a.itemsize) # 1
数据类型信息


class iinfo(object):
    def __init__(self, int_type):
        pass
         def min(self): 
         pass 
         def max(self):
          pass 

例:import numpy as np ii16 = np.iinfo(np.int16) print(ii16.min) # -32768 print(ii16.max) # 32767

(3)时间日期和时间增量
在 numpy 中,我们很方便的将字符串转换成时间日期类型 datetime64 ( datetime 已被 python 包含的日期时间库所占用)。datatime64 是带单位的日期时间类型
例:import numpy as np a = np.datetime64('2020-03-01') print(a, a.dtype) # 2020-03-01 datetime64[D]
【例】从字符串创建 datetime64 类型时,可以强制指定使用的单位。


import numpy as np a = np.datetime64('2020-03', 'D') 
print(a, a.dtype) # 2020-03-01 datetime64[D] 

【例】从字符串创建 datetime64 数组时,如果单位不统一,则一律转化成其中最小的单位。


import numpy as np a = np.array(['2020-03', '2020-03-08', '2020-03-08 20:00'], dtype='datetime64') 
print(a, a.dtype) # ['2020-03-01T00:00' '2020-03-08T00:00' '2020-03-08T20:00'] 
datetime64[m] 

【例】使用 arange() 创建 datetime64 数组,用于生成日期范围。


import numpy as np a = np.arange('2020-08-01', '2020-08-10', dtype=np.datetime64) 
print(a)
 # ['2020-08-01' '2020-08-02' '2020-08-03' '2020-08-04' '2020-08-05' # '2020-08-06' '2020-08-07' '2020-08-08' '2020-08-09'] print(a.dtype) # datetime64[D] 

datetime64 和 timedelta64 运算

timedelta64 表示两个 datetime64 之间的差。timedelta64 也是带单位的,并且和相减运算中的两个 datetime64 中的较小的单位保持一致。
生成 timedelta64时,要注意年(‘Y’)和月(‘M’)这两个单位无法和其它单位进行运算(一年有几天?一个月有几个小时?这些都是不确定的)。


import numpy as np a = np.timedelta64(1, 'Y')
print(a)   # 1 years

print(np.timedelta64(a, 'D'))
 # TypeError: Cannot cast NumPy timedelta64 scalar from metadata [Y] to [D] according to the rule 'same_kind' 

【例】timedelta64 的运算。


import numpy as np a = np.timedelta64(1, 'Y')

b = np.timedelta64(6, 'M') 

print(a + b) # 18 months 

【例】numpy.datetime64 与 datetime.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') 
print(dt64, dt64.dtype) # 2020-06-01T20:05:30 datetime64[s] 
dt2 = dt64.astype(datetime.datetime) 
print(dt2, type(dt2)) # 2020-06-01 20:05:30 <class 'datetime.datetime'>

(4)创建数组

a.``通过array()函数进行创建。


import numpy as np
 # 创建一维数组 
a = np.array([0, 1, 2, 3, 4]) 
print(a, type(a))  # [0 1 2 3 4] <class 'numpy.ndarray'> 
# 创建二维数组 c = 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]]) 
print(c, type(c)) 
# [[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]] <class 'numpy.ndarray'> 
# 创建三维数组
 d = np.array([[(1.5, 2, 3), (4, 5, 6)], [(3, 2, 1), (4, 5, 6)]]) print(d, type(d)) 
# [[[1.5 2. 3. ] # [4. 5. 6. ]] ## [[3. 2. 1. ] # [4. 5. 6. ]]] <class 'numpy.ndarray'> 

b.通过asarray()函数进行创建

array() 和 asarray() 都可以将结构数据转化为 ndarray,但是 array() 和 asarray() 主要区别就是当数据源是ndarray 时,array() 仍然会 copy 出一个副本,占用新的内存,但不改变 dtype 时 asarray() 不会。


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

【例】更改为较大的dtype时,其大小必须是array的最后一个axis的总大小(以字节为单位)的除数


import numpy as np
 x = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])
 print(x, x.dtype)
  # [[1 1 1] # [1 1 1] # [1 1 1]] int32 
 y=x.dtype ( 'float' )
 print(y)

c.通过fromfunction()函数进行创建
给函数绘图的时候可能会用到 fromfunction() ,该函数可从函数中创建数组。

【例】通过在每个坐标上执行一个函数来构造数组。


import numpy as np 
  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]] 

依据 ones 和 zeros 填充方式

zeros() 函数:返回给定形状和类型的零数组。
zeros_like() 函数:返回与给定数组形状和类型相同的零数组。

import numpy as np 
x = np.zeros(5) 
print(x)  
# [0. 0. 0. 0. 0.] 
x = np.array([[1, 2, 3], [4, 5, 6]]) 
y = np.zeros_like(x) 
print(y) 
# [[0 0 0] # [0 0 0]] 

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

空数组

empty() 函数:返回一个空数组,数组元素为随机数。
empty_like 函数:返回与给定数组具有相同形状和类型的新数组。

单位数组

eye() 函数:返回一个对角线上为1,其它地方为零的单位数组。
identity() 函数:返回一个方的单位数组。

x = np.eye(4) 
print(x)
x = np.identity(4) 
print(x) 

对角数组


import numpy as np
 x = np.arange(9).reshape((3, 3))
  print(x) # [[0 1 2] # [3 4 5] # [6 7 8]] 
  print(np.diag(x))# [0 4 8] 
  print(np.diag(x, k=1))# [1 5] 
  print(np.diag(x, k=-1)) # [3 7] 

常数数组

full() 函数:返回一个常数数组。
full_like() 函数:返回与给定数组具有相同形状和类型的常数数组。

import numpy as np
 x = np.full((2,), 7)
  print(x) # [7 7] 

利用数值范围来创建ndarray

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

结构数组的创建

利用字典来定义结构

import numpy as np 
personType = np.dtype({ 'names': ['name', 'age', 'weight'], 'formats': ['U30', 'i8', 'f8']}) 
a = np.array([('Liming', 24, 63.9), ('Mike', 15, 67.), ('Jan', 34, 45.8)], dtype=personType) 
print(a, type(a)) # [('Liming', 24, 63.9) ('Mike', 15, 67. ) ('Jan', 34, 45.8)] # <class 'numpy.ndarray'> 

利用包含多个元组的列表来定义结构


import numpy as np
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)
print(a, type(a)) # [(‘Liming’, 24, 63.9) (‘Mike’, 15, 67. ) (‘Jan’, 34, 45.8)] # <class ‘numpy.ndarray’>
结构数组的取值方式和一般数组差不多,可以通过下标取得元素:
print(a[0]) # (‘Liming’, 24, 63.9)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值