创建数组对象:
通过NumPy库的array函数可以创建ndarray数组。通常来说,ndarray是一个通用的数据容器,即其中的所有元素都需要相同的类型。NumPy库能将数据(列表,元组,数组或者其他序列类型)转换为ndarray数组
1,使用array创建数组对象
array函数格式:
np.array(object,dtype,ndmin)
参数 | 说明 |
object | 接收array,表示想要创建的数组 |
dtype | 接收data-type,表示数组所需的数据类型,为给定时默认为None |
ndamin | 接收int,指定生成数组应该具有的最小维数,默认为None |
创建ndarray数组:
import numpy as np
data1 = [1,3,5,7] #列表
w1 = np.array(data)
data2 = (1,3,5,7) #元组
w2 = np.array(data2)
data3 = [[1,2,3,4],[5,6,7,8]]
w3 = np.array(data3)
在创建数组时,NumPy会为新创建的数组推断出一个合适的数据类型,并保存在dtype中,当序列中有整数和浮点数时,NumPy会把数组的dtype定义为浮点数据类型
在array中指定dtype:
import numpy as np
w3 = np.array([1,2,3,4],dtype='float64')
print(w3.dtype)
#输出结果
#float64
2,专门创建数组的函数:
通过array函数使用已有的Python序列创建按数组效率不高,因此,NumPy提供了很多专门创建数组的函数
1)arange函数
arange函数类似于Python的内置函数range,但是arange主要用来创建数组
import numpy as np
warray = np.arange(10)
print(warray)
Out:[0 1 2 3 4 5 6 7 8 9]
指定起始值,终值及步长参数的arange
import numpy as np
warray = np.arange(0,1,0.2)
print(warray)
Out:[0,0.2,0.4,0.6,0.8]
2)linspace函数
当arange的参数是浮点型时,由于浮点型的精度有限,通常不太可能去预测获得元素的数量,处于这个原因,通常选用更好的函数linspace,它接收元素的数量作为参数,linspace函数通过指定起始值,终值和元素个数创建一维数组,默认包括终值
import numpy as np
warray = np.linspace(0,1,5)
print(warray)
Out:[0. 0.25 0.5 0.75 1.]
3)logspace函数:
logspace和linspace函数类似,不同点是logspace创建的是等比数列
import numpy as np
warray = np.logspace(0,1,5)#生成1~10的具有5个元素的等比数列
print(warray)
Out:[ 1. 1.77827941 3.16227766 5.62341325 10. ]
logspace的参数中,起始位和终止位代表的是10的幂(默认基数为10),第三个元素表示元素的个数
4)zeros函数:
创建指定长度或形状的全0数组
全零矩阵;
import numpy as np
warray = np.zeros(4)
print(warray)
print(np.zeros([4,4]))
Out:[0. 0. 0. 0.]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
5)ones函数:
创建指定长度或形状的全1数组
import numpy as np
warray = np.ones(4)
print(warray)
print(np.ones([4,4]))
Out:[1. 1. 1. 1.]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
6)dig函数
创建对角矩阵,即对角线元素为0或指定值,其他元素为0
import numpy as np
print(np.diag([1,2,3,4]))
Out:[[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]]
7)eye函数:
对角线位置为1,其他位置为0
import numpy as np
print(np.eye(3))
Out:[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
8)mat函数
import numpy as np
print(np.mat("1,2,3,4,5,6,7,8,9"))
print(np.mat("1,2,3;4,5,6;7,8,9"))#3×3的矩阵
Out:[[1 2 3 4 5 6 7 8 9]]
[[1 2 3]
[4 5 6]
[7 8 9]]
9)np.random.random
import numpy as np
print(np.random.random([3,3]))
print(np.random.random([3,3,2]))#第一个参数3是个数,输出3个3行两列的数组