1、属性
import numpy as np
array = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
print(array)
print(array.ndim)#维度
print(array.shape)#形状
print(array.size)#大小
print(array.dtype)#元素属性
2、创建方法
import numpy as np
#给它个类型
a=np.array([1,2,3],dtype=np.int32)
print(a.dtype)
b=np.array([1,2,3],dtype=np.float)
print(b.dtype)
c=np.array([1,2,3])#一维数组
print(c)
d = np.array([[1,2,3],
[4,5,6],
])#二维矩阵
print(d)
zero=np.zeros((2,3))#生成两行三列全为0的矩阵
print(zero)
one = np.ones((3,4))#生成3行4列的全为1 的矩阵
print(one)
empty = np.empty((3,2))#生成3行2列全都接近于0但不等于0
print(empty)
e = np.arange(10)
print(e)
f=np.arange(4,12)
print(f)
#从1开始,中间间隔3,到20结束
g=np.arange(1,20,3)
print(g)
h = np.arange(8).reshape(2,4)
print(h)
3、矩阵运算
import numpy as np
arr1 = np.array([[1,2,3],
[4,5,6]])
arr2 = np.array([[1,1,2],
[2,3,3]])
print(arr1+arr2)#矩阵加法
print(arr1-arr2)
print(arr1*arr2)#按位乘
print(arr1**arr2)#按位幂
print(arr1/arr2)
print(arr1%arr2)
print(arr1//arr2)
print(arr1+2)#所有元素加2
print(arr1*10)
arr3 = arr1 >3#判断哪些数大于3,大于为true,小于false
print(arr3)
arr4 = np.ones((3,5))
print(arr4)
np.dot(arr1,arr4)#矩阵乘
arr1.dot(arr4)
print(arr1)
print(arr1.T)#转置矩阵
print(np.transpose(arr1))
4、随机数的生成和其他运算
import numpy as np
#生成3行2列,从0到1的随机数
sample1=np.random((3,2))
print(sample1)
#生成3行2列标准正态函数的随机数
sample2=np.random.normal(size=(3,2))
print(sample2)
#生成3行2列从0到10的整数
sample3 = np.random.randint(0,10,size=(3,2))
np.sum(sample1)#q求所有元素和
np.min(sample1)#求最小值
np.max(sample1)#求最大值
np.sum(sample1,axis=0)#对列求和
np.sum(sample1,axis=1)#对行求和
np.argmin(sample1)#求所有元素最小值的索引
np.argmax(sample1)#最大值索引
print(np.mean(sample1))#求所有元素的平均值‘
print(sample1.mean())#同上
np.median(sample1)#求中位数
np.sqrt(sample1)#开方的结果
sample4 = np.random.randint(0,10,size=(1,10))
print(sample4)
np.sort(sample1)#对每一行进行从小到大的排序
np.clip(sample4,2,7)#里面元素小于2变为2,大于7变为7
5、numpy的索引
import numpy as np
arr1 = np.arange(2,14)
print(arr1)
print(arr1[2])#提取2号索引,即第三个位置的数据
print(arr1[1:4])#第一道第四个位置的数据
print(arr1[2:-1])#从第2到倒数第一个位置
print(arr1[:5])#前五个数据
print(arr1[-2:])#最后两个数据
arr2=arr1.reshape(3,4)#把arr1转换为3行4列的二维数组
print(arr2[1])
print(arr2[1][1])
print(arr2[1,2])
print(arr2[:,2])#所有的行里的第二列
#迭代每一行
for i in arr2 :
print(i)
#迭代每一列,使用转置
for i in arr2.T :
print(i)
#一个一个元素的迭代
for i in arr2.flat :
print(i)
6、array合并
import numpy as np
arr1=np.array([1,2,3])
arr2=np.array([4,5,6])
#把两个数组合并,变成了2维数组
arr3=np.vstack((arr1,arr2))
print(arr3)
print(arr3.shape)
#水平的合并成一维的数组
arr4 = np.hstack((arr1,arr2))
print(arr4)
print(arr4.shape)
#多个array的合并
arrv = np.vstack((arr1,arr2,arr3))
print(arrv)
arrh=np.hstack((arr1,arr2,arr4))
arr=np.concatenate((arr1,arr2,arr1))
print(arr)
#axis=0代表纵向的合并,维度要相同,形状要匹配
arr=np.concatenate((arr3,arrv),axis=0)
print(arr)
#axis=1代表纵向的横向
arr=np.concatenate((arr3,arrv),axis=1)
print(arr)
print(arr1.T)#一维的无法转置
#给他新增一个维度[[1,2,3]]
arr1_1=arr1[np.newaxis,:]
print(arr1_1)
print(arr1_1.shape)
print(arr1_1.T)#这样就可以转置了
#这样会变成三行1列的数据,竖着的1,2,3
arr1_2=arr1[:,np.newaxis]
print(arr1_2)
print(arr1_2.shape)
#如果arr1是一维的数据,那自动变为二维数据,如果大于等于2 则不变
arr1_3=np.atleast_2d(arr1)
7、array的分割
这里的垂直和水平分割有一点超出我的认知。垂直是横着切,水平是竖着切。
import numpy as np
arr1 = np.arange(12).reshape((3,4))
print(arr1)
#水平方向的分割 分成两个部分
arr2,arr3=np.split(arr1,2,axis=1)
print(arr2)
print(arr3)
#垂直方向分割,分成三份
arr4,arr5,arr6 = np.split(arr1,3,axis=0)
print(arr4)
print(arr5)
print(arr6)
#水平方向分割,分割成三部分,但因为无法等分为三部分,所以是不等分的
arr7,arr8,arr9=np.array_split(arr1,3,axis=1)
print(arr7)
print(arr8)
print(arr9)
#垂直分割
arrv1,arrv2,arrv3=np.vsplit(arr1,3)
print(arrv1)
print(arrv2)
print(arrv3)
#水平分割
arrh1,arrh2=np.hsplit(arr1,2)
print(arrh1)
print(arrh2)
8、numpy的浅拷贝和深拷贝
import numpy as np
arr1=np.array([1,2,3])
#他们是同一块内存,地址是相同的
#这样的拷贝是浅拷贝
arr2=arr1
arr2[0]=5
print(arr1)
print(arr2)
#从新开辟一块内存,深拷贝
arr3 = arr1.copy()
arr3[0]=10
print(arr1)
print(arr3)