numpy中 array学习(一)

一、python内置array模块

这个模块定义了一个对象类型,用以表示一些基础变量构成的列表,包括字符,整数,浮点数,Array是序列类型,使用起来与list十分接近,但是存储的变量类型只能是一种,所以方便高效的数值运算。
此模块定义了如下类型:
class array.array(typecode[, initializer])

import array
array.array('i',[1,2,3])

typecode限制了array的类型;initializer为可选项,用于初始化,这个参数必须是一个列表,一个类似于字节的对象,或者对适当类型的元素进行迭代的迭代器。

与numpy区别详细参考:https://blog.csdn.net/pipisorry/article/details/39215089

二、np.array

1.NumPy中的基本数据类型

名称描述
bool用一个字节存储的布尔类型(True或False)
inti由所在平台决定其大小的整数(一般为int32或int64)
int8一个字节大小,-128 至 127
int16整数,-32768 至 32767
int32整数,-2 ** 31 至 2 ** 32 -1
int64整数,-2 ** 63 至 2 ** 63 - 1
uint8无符号整数,0 至 255
uint16无符号整数,0 至 65535
uint32无符号整数,0 至 2 ** 32 - 1
uint64无符号整数,0 至 2 ** 64 - 1
float16半精度浮点数:16位,正负号1位,指数5位,精度10位
float32单精度浮点数:32位,正负号1位,指数8位,精度23位
float64或float双精度浮点数:64位,正负号1位,指数11位,精度52位
complex64复数,分别用两个32位浮点数表示实部和虚部
complex128或complex复数,分别用两个64位浮点数表示实部和虚部

2.使用np.array方法将tuple和list, 或者其他的序列模式的数据转换为 ndarray(多维数组)。

>>>a = np.array([1,2,3,4])   # 参数是list, list是一种复合数据类型,
>>>b = np.array((5,6,7,8))   # 参数是tuple,不能二次赋值,相当于只读列表
>>>print(type(a))    # 返回矩阵 a 的数据类型
>>>print(type(b))    
	<class 'numpy.ndarray'>
	<class 'numpy.ndarray'>

>>>print(a.dtype)    # 返回 a 中元素的数据类型
>>>print(b.dtype)
	<U11
	int32

3.使用numpy中的函数np.array(),不同于list(list中保存的是数据存放的地址,比如list[1,2,3,‘a’] ),np.array中参数的数据类型必须全部相同。

np.array([[1,2,3,"a"],[4,'b',6,7]],(1,2,3,4))    # 报错
np.array([[1,2,3,"a"],[4,'b',6,7]],[1,2,3,4])    # 通过

1.创建

一般创建

import numpy as np

>>>a = np.array([[1,2,3]])       # 神经网络中,表示一维Matrix(行向量)
>>>print(a)
	[[1 2 3]]

>>>b = np.array([[1,1,1],[2,2,2],[3,3,3]])   #  3×3 矩阵
>>>print(b)
	 [[1 1 1]
	   [2 2 2]
 	   [3 3 3]]
 	   
>>>c = np.array([1,2,3],dtype = complex)      # 区别于 a,这是一维array,dtype指定数组中元素的类型
>>>print(c)
	[1.+0.j 2.+0.j 3.+0.j]

rand()和randn()

>>>d = np.random.randn(5,1)     # randn返回具有标准正太分布(N(0,1))的样本,左开右闭
>>>print(d)
	[[-0.35357824]
	 [ 1.00639613]
	 [-0.04536121]
	 [ 0.40522356]
	 [-0.09501711]]

>>>e = np.random.rand(5,1)      # 随机样本[0,1)
>>>print(e)
	[[0.68935775]
	 [0.20780517]
	 [0.02238914]
	 [0.31708669]
	 [0.45436972]]

>>>f = np.random.randn(5)       # 神经网络构建时表示一维数组,区别于 d 矩阵(列向量)
>>>print(f)
	 [-1.03610009 -0.18660966  0.57321627  1.1973498  -0.52833346]    秩为1

特殊数组

np.ones: 创建一个数组, 其中的元素全为 1 
np.zeros: 创建元素全为 0 的数组, 类似 np.ones 
np.empty创建一个内容随机并且依赖与内存状态的数组。 
np.eye: 创建一个对角线为 1 其他为 0 的矩阵. 
np.identity: 创建一个主对角线为 1 其他为 0 的方阵.

**生成均匀分布的array:**
arange(最小值,最大值,步长)(左闭右开) : 等差数列 
linspace(最小值,最大值,元素数量) 
logspace(开始值, 终值, 元素个数):    等比数列

2.操作

shape函数:numpy中查看matrix的维数;size函数:查看元素个数

>>>a = np.eye(3)    # eye(3),创建一个3×3单位矩阵
>>>print(a)
	[[1. 0. 0.]
	 [0. 1. 0.]
	 [0. 0. 1.]]
>>>a.shape          # 矩阵的维度
	(3, 3)
>>>a.size	 		# 元素个数
	9

>>>c = np.array([[1,2],[3,4],['a','b'],['c','d']])     # 4×2矩阵
>>>print(c.shape[0])                 #  c.shape[0] 为第二维的长度 (纵轴)
>>>print(c.shape[1])                 #  c.shape[1] 为第一维的长度 (横轴)    shape[3]为第三维长度,这
>>>print(c.shape[2])                #  shape[3]为第三维长度,这里没有第三维,报错
4
2

>>>b = np.array([1,2,3,4])   #   rank 1 array, 神经网络编程中别用
>>>b.shape          # 4 表示array的长度**(特殊情况)**
	(4,)
>>>b.size
	4

reshape函数:给array一个新的形状,但不改变其数据

>>> c = arange(24).reshape(2,3,4)           
>>> print c  
    [[[ 0  1  2  3]  
    [ 4  5  6  7]  
    [ 8  9 10 11]]  
     
    [[12 13 14 15]  
    [16 17 18 19]  
    [20 21 22 23]]]  

3.运算

知识点: NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是NumPy中的轴(axes),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。

re:https://blog.csdn.net/sunny2038/article/details/9002531

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值