文章目录
- 前言
- 一、使用numpy.array()来创建ndarray对象
- 二、ndarray对象的基本属性
- 三、创建特殊数组的函数
-
- 1.zeros():创建一个矩阵,内部元素均为0,第一个参数提供维度,第二个参数提供类型。
- 2.ones():创建一个矩阵,内部元素均为1,第一个参数提供维度,第二个参数提供类型。
- 3.empty():创建一个矩阵,内部是无意义的数值,第一个参数提供维度,第二个参数提供类型。
- 4.eye():创建一个对角矩阵,第一个参数提供矩阵规模,对于第二个参数而言,如果为0则对角线全为“1”,大于0则右上方第K条对角线全为“1”,小于0则左下方第K条对角线全为“1”,第三个参数提供类型。
- 5. full():full((m,n),c)可以生成一个m×n的元素全为c的矩阵。
- 6.random.random():random.random((m,n))生成一个m×n的元素为0~1之间随机数的矩阵。
- 7.random.randint():numpy.random.randint(low, high=None, size=None, dtype=’l’) 函数的作用是,返回一个随机整型数,范围从低(包括)到高(不包括),即[low, high)。如果没有写参数high的值,则返回[0,low)的值。
- 8. random.rand():random.rand(d0,d1,…,dn) 函数根据给定维度生成[0,1)之间的数据,其中,dn表示每个维度的元素个数。
- 9.random.randn():random.randn(d0,d1,…,dn) 函数返回一个或一组样本,具有标准正态分布,其中,dn表示每个维度的元素个数。
- 10.arange():数值范围创建数组
- 四、使用astype方法改变数组数据类型
- 总结
前言
接下来介绍创建numpy数组,要保证已经安装了numpy库。
提示:所有资料来源于书本和网上,本人仅整理
一、使用numpy.array()来创建ndarray对象
NumPy 的主要对象(类)是 numpy.ndarray,简称 ndarray 。
函数 numpy.array() 是最基本的 ndarray 对象创建方法。
其完整格式为:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数的含义如表所示:
参数名称 | 参数含义 |
---|---|
object | 返回一个数组或任何(嵌套)序列(列表,元祖,数组,或者其他序列类型) |
dtype | 数组元素的数据类型,可选。 |
copy | 可选,默认为true,对象是否需要复制。 |
order | 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) |
subok | 默认情况下,返回的数组被强制为基类数组。如果为true,则返回子类。 |
ndmin | 指定返回数组的最小维数 |
1.创建一维数组
import numpy as np
a=[1,2,3,4,5]
b=np.array(a)
print(b)
array([1, 2, 3, 4, 5])
2.创建多维数组对象,可以把多维数组看做成矩阵
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
[[1 2 3]
[4 5 6]
[7 8 9]]
3.创建多维数组对象,设置数组元素类型
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]],dtype=complex)
print(a,type(a))
[[1.+0.j 2.+0.j 3.+0.j]
[4.+0.j 5.+0.j 6.+0.j]
[7.+0.j 8.+0.j 9.+0.j]] <class ‘numpy.ndarray’>
二、ndarray对象的基本属性
创建数组后,可以查看ndarray对象的基本属性。属性我们常需要调用的就是ndim,shape和dtype
属性名称 | 属性值 |
---|---|
shape | 返回一个包含数组维度的元组,也可以用于调整数组大小,矩阵,n行m列 |
reshape | 调整数组大小 |
size | 返回数组元素的总个数,相当于 .shape 中 n*m 的值 |
data | 返回数组中的元素在内存中所占的字节数 |
ndim | 返回数组的维数,也称为秩。 |
itemsize | 数组中每个元素的字节单位长度 |
flags | 返回数组的内存信息,一些属性的当前值。 |
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print('a.shape={},a.itemsize={},a.reshape={}'.format(a.shape,a.itemsize,a.reshape))
print('a.size={},a.ndim={},a.flags={}'.format(a.size,a.ndim,a.flags))
a.shape=(3, 3),a.itemsize=4,a.reshape=<built-in method reshape of numpy.ndarray object at 0x0000000006E58570>
a.size=9,a.ndim=2,a.flags= C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
1.ndarray.ndim 用于返回数组的维数,等于秩。
NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。
import numpy as np
a = np.arange(24)
print (a.ndim) # a 现只有一个维度
# 现在调整其大小
b = a.reshape(2,4,3) # b 现在拥有三个维度
print (b.ndim)
1
3
2.ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。
比如,一个二维数组,其维度表示”行数”和”列数”。
ndarray.shape 也可以用于调整数组大小。
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
print (a.shape)
(2, 3)
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a.shape = (3,2)
print (a)
[[1 2]
[3 4]
[5 6]]
3.reshape 函数用来调整数组大小。
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = a.reshape(3,2)
print (b)
[[1 2]
[3 4]
[5 6]]
三、创建特殊数组的函数
Python做数据处理的时候经常要初始化高维矩阵,常用的函数包括zeros()、ones()、empty()、eye()、full()、random.random()、random.randint()、random.rand()、random.randn(),arange()等,具体如下:
1.zeros():创建一个矩阵,内部元素均为0,第一个参数提供维度,第二个参数提供类型。
a=np.zeros([2,3],int)
a
array([[0, 0, 0],
[0, 0, 0]])
2.ones():创建一个矩阵,内部元素均为1,第一个参数提供维度,第二个参数提供类型。
a=np.ones([2,3],int)
a
array([[1, 1, 1],
[1, 1, 1]])
3.empty():创建一个矩阵,内部是无意义的数值,第一个参数提供维度,第二个参数提供类型。
a=np.empty([2,3],int)
a
array([[ 68485166, 0, 0],
[ 0, 131074, 1919184485]])
4.eye():创建一个对角矩阵,第一个参数提供矩阵规模,对于第二个参数而言,如果为0则对角线全为“1”,大于0则右上方第K条对角线全为“1”,小于0则左下方第K条对角线全为“1”,第三个参数提供类型。
a=np.eye(3,k=1,dtype=int)
a
array([[0, 1, 0],
[0, 0, 1],
[0, 0, 0]])
a=np.eye(4,k=-1,dtype=int)
a
array([[0, 0, 0, 0],
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0]])
5. full():full((m,n),c)可以生成一个m×n的元素全为c的矩阵。
a=np.full((2,3),4)
a
array([[4, 4, 4],
[4, 4, 4]])
6.random.random():random.random((m,n))生成一个m×n的元素为0~1之间随机数的矩阵。
a=np.random.random((2,3))
a
array([[0.18286065, 0.49739954, 0.00816374],
[0.07114833, 0.99882232, 0.85993699]])
7.random.randint():numpy.random.randint(low, high=None, size=None, dtype=‘l’) 函数的作用是,返回一个随机整型数,范围从低(包括)到高(不包括),即[low, high)。如果没有写参数high的值,则返回[0,low)的值。
a=np.random.randint(2,size=10)
a
array([1, 1, 0, 0, 1, 0, 0, 0, 1, 1])
b=np.random.randint(4,size=(2,4))
b
array([[2, 1, 0, 0],
[3, 2, 0, 0]])
8. random.rand():random.rand(d0,d1,…,dn) 函数根据给定维度生成[0,1)之间的数据,其中,dn表示每个维度的元素个数。
a=np.random.rand(4,2)
a
array([[0.02335591, 0.84434184],
[0.95469876, 0.65628179],
[0.67500362, 0.20047595],
[0.52385056, 0.87317168]])
9.random.randn():random.randn(d0,d1,…,dn) 函数返回一个或一组样本,具有标准正态分布,其中,dn表示每个维度的元素个数。
a=np.random.randn(4,2)
a
array([[-0.1637063 , 0.10924046],
[ 0.58542562, -0.24893933],
[ 0.57567011, -0.72116581],
[ 1.38331519, -0.37297922]])
10.arange():数值范围创建数组
我们做循环的时候经常会用到range,可以取数值范围,numpy中有个arange函数,可用于创建数组。
a=np.arange(9)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
这样创建的数组只能是一维的,arange函数经常和reshape一起使用(后面还会介绍),可以创建多维的数组。
a=np.arange(9).reshape(3,3)
a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
四、使用astype方法改变数组数据类型
这个我们经常会用到,例如我们把整数数组转换为浮点数数组,使用astype方法,用np.float64和’float64’都可以。
a=np.arange(9).reshape(3,3)
print(a)
b=a.astype(np.float64)
print(b)
print(id(a),id(b))
[[0 1 2]
[3 4 5]
[6 7 8]]
[[0. 1. 2.]
[3. 4. 5.]
[6. 7. 8.]]
115705872 94174832
总结
本文仅仅简单介绍了numpy数组的创建。