# Ndarray 对象
import numpy as np
a = np.array([1,2,3]) #一维
a = np.array([[1, 2], [3, 4]]) #多维
a = np.array([1, 2, 3, 4, 5], ndmin = 2) #最小维度
a = np.array([1, 2, 3], dtype = complex) #dtype
# NumPy 数据类型
dt = np.dtype(np.int32) # 使用标量类型
dt = np.dtype('i4') # int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
dt = np.dtype('<i4') # 字节顺序标注
dt = np.dtype([('age',np.int8)]) # 首先创建结构化数据类型
a = np.array([(10,),(20,),(30,)], dtype = dt) # 将数据类型应用于 ndarray 对象
a['age'] # 类型字段名可以用于存取实际的 age 列
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student)
# NumPy 数组属性
a = np.arange(24)
a.ndim #ndim维数
a.shape #shape维度
a = np.array([[1,2,3],[4,5,6]])
a.shape = (3,2) #调整维度
b = a.reshape(3,2) #reshape调整维度
x = np.array([1,2,3,4,5], dtype = np.int8)
print (x.itemsize) #ndarray.itemsize 以字节的形式返回数组中每一个元素的大小
print (x.flags) #ndarray.flags 返回 ndarray 对象的内存信息
# NumPy 创建数组
x = np.empty([3,2], dtype = int) #numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组
y = np.zeros((5,), dtype = np.int) #创建指定大小的数组,数组元素以 0 来填充
z = np.ones([2,2], dtype = int) #创建指定形状的数组,数组元素以 1 来填充
#NumPy 从已有的数组创建数组
x = [1,2,3]
a = np.asarray(x)
y = (1,2,3)
b = np.asarray(y) #将列表、元组转换为 ndarray:
s = b'Hello World'
a = np.frombuffer(s, dtype = 'S1') #numpy.frombuffer 用于实现动态数组
list=range(5)
it=iter(list)
x=np.fromiter(it, dtype=float) #使用迭代器创建 ndarray
# NumPy 从数值范围创建数组
x = np.arange(5) #arange 函数创建数值范围并返回 ndarray 对象
a = np.linspace(1,10,num=10) #numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的
b = np.logspace(1.0, 2.0, num = 10) #numpy.logspace 函数用于创建一个于等比数列
# NumPy 切片和索引
a = np.arange(10)
s = slice(2,7,2) # slice从索引 2 开始到索引 7 停止,间隔为2
b = a[2:7:2] # 从索引 2 开始到索引 7 停止,间隔为 2
b = a[2:] # 从索引 2 开始到索引 7 停止,间隔为 2
# NumPy 广播(Broadcast)
a = np.array([1,2,3,4])
b = np.array([10,20,30,40])
c = a * b
a = np.array([[ 0, 0, 0],
[10,10,10],
[20,20,20],
[30,30,30]])
b = np.array([1,2,3])
print(a + b) # 2 个数组的形状不同时,广播机制