nadarray
Numpy最重要的一个特点就是N维数组对象(nadarray),该对象是一个快速而灵活的大数据集容器。
a.创建nadarray
np.array(data)
data1 = [1,2,3,4]
arr1 = np.array(data1)
arr1
#array([1, 2, 3, 4])
除了np.array(data)
可以创建数组,zeros
和ones
也可以创建指定形状全为0或全为1的数组,empty
可以创建一个没有任何具体指的数组。
np.zeros((3,6))
array([[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.]])
np.empty((2,2))
array([[7.50639772e-312, 3.21450328e+164],
[1.85692977e+216, 1.99392236e-077]])
其他数组创建函数
函数 | 说明 |
---|---|
array | 将列表,元组,数组或其他有序类型转化为ndarray |
asarray | 将输入数据转化为ndarray,如果本身就是ndarray就不进行复制 |
arange | 类似于range,但返回的是nadarray而不是列表 |
ones,ones_like | 创建一个指定形状全为1的数组,ones_like以另一个数组为参考,根据其形状创建 |
zeros,zeros_like_ | 同上 |
empty,empty_ike | 创建新数组,只分配空间不填充任何值 |
eye,identity | 创建一个正方N*N的单位矩阵(对角线为1,其余为0) |
array与asarray的区别
当数据源是ndarray时,array仍会copy出一个副本,占用新的内存,但asarray不会
#输入数据不是ndarray类型 array与asarray一样
data1=[[1,1,1],[1,1,1],[1,1,1]]
arr2=np.array(data1)
arr3=np.asarray(data1)
data1[1][1]=2
print('data1:\n',data1)
print('arr2:\n',arr2)
print('arr3:\n',arr3)
data1:
[[1, 1, 1], [1, 2, 1], [1, 1, 1]]
arr2:
[[1 1 1]
[1 1 1]
[1 1 1]]
arr3:
[[1 1 1]
[1 1 1]
[1 1 1]]
#输入数据是ndarray类型 array与asarray的不同
arr1=np.ones((3,3))
arr2=np.array(arr1)
arr3=np.asarray(arr1)
arr1[1]=2
print('arr1:\n',arr1)
print('arr2:\n',arr2)
print('arr3:\n',arr3)
arr1:
[[1. 1. 1.]
[2. 2. 2.]
[1. 1. 1.]]
arr2:
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
arr3:
[[1. 1. 1.]
[2. 2. 2.]
[1. 1. 1.]]
zeros_like使用方法
data2 = np.array(
[[1,2,3],
[4,5,6]]
)
np.zeros_like(data2)
array([[0, 0, 0],
[0, 0, 0]])
numpy.eye()与np.identity()
numpy.eye(N,M=None,k=0,dtype=<class 'float'>,order='C)
(1)N:int型,表示的是输出的行数
(2)M:int型,可选项,输出的列数,如果没有就默认为N
(3)k:int型,可选项,对角线的下标,默认为0表示的是主对角线,负数表示的是低对角,正数表示的是高对角。
(4)dtype:数据的类型,可选项,返回的数据的数据类型
(5)order:{‘C’,‘F'},可选项,也就是输出的数组的形式是按照C语言的行优先’C',还是按照Fortran形式的列优先‘F'存储在内存中
import numpy as np
a=np.eye(3)
print(a)
a=np.eye(4,k=1) #右上移动1
print(a)
a=np.eye(4,k=-1)
print(a)
a=np.eye(4,k=-3)
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
[[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]
[0. 0. 0. 0.]]
[[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
np.identity(n,dtype=None)
参数:n,int型表示的是输出的矩阵的行数和列数都是n
dtype:表示的是输出的类型,默认是float
返回的是nxn的主对角线为1,其余地方为0的数组
import numpy as np
a=np.identity(3)
print(a)
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
b.ndarray的属性
属性 | 说明 |
---|---|
ndarray.shape | 数组维度的元组 |
ndarray.ndim | 数组维度 |
ndarray.size | 数组中的元素量 |
ndarray.itemsize | 一个数组元素的长度(字节) |
ndarray.dtype | 数组元素的类型 |
data2 = np.array(
[[1,2,3],
[4,5,6]]
)
print('data2.shape:',data2.shape)
print('data2.ndim:',data2.ndim)
print('data2.size:',data2.size)
print('data2.itemsize:',data2.itemsize)
print('data2.dtype:',data2.dtype)
data2.shape: (2, 3)
data2.ndim: 2
data2.size: 6
data2.itemsize: 4
data2.dtype: int32
c.ndarray的类型
arr1 = np.array([1,2,3],dtype = np.float64)
arr2 = np.array([1,2,3],dtype = np.int32)
print(arr1.dtype)
print(arr2.dtype)
float64
int32
Numpy的dtype有:浮点数,复数,整数,布尔值,字符串,还有python对象。
修改dtype的值ndarray.astype
arr = np.array([1,2,3],dtype = np.float64)
float_arr = arr.astype(np.float)
print(float_arr.dtype)
float64