-
shift+enter 执行
esc+m 添加笔记
#+空格 标题
*+空格 点
查看全部 -
1.a = np.array([1,2]) # 元素均为整数,识别为int
a = np.array([1.1,2.2]) # 元素均为小数,识别为float
a = np.array([1,2.2]) # 元素有小数也有整数,识别为float
a = np.array([1.1,2.6], dtype=np.int64) # 本来元素是小数,设置类型为int,会自动把小数点后面的数字去掉
查看全部 -
rank:数组维数
reshape((x,y)):x->行,y->列,-1->占位符
np.zeros((x,y)):创建x行y列元素为0的数组
np.ones((x,y))
np.full((x,y),z):创建x行y列数组,所有元素都为z
np.eye(n):n维单位矩阵
random.random((x,y)):创建0-1的随机数组
查看全部 -
shift+enter 执行代码 esc+m 文本形式 #+空格 一级标题 ##+空格 二级标题 。。。 * 加点标查看全部
-
Array (数组)
rank
In [1]:
import numpy as np
a=np.array([1,2,3])
In [2]:
a
Out[2]:
array([1, 2, 3])
In [3]:
type(a)
Out[3]:
numpy.ndarray
In [4]:
a.shape #没有表明是行向量还是列向量,只是表明有三个元素
Out[4]:
(3,)
In [5]:
a=a.reshape(1,-1) #-1代表3,即reshape函数将a设置为一行三列的数组
In [6]:
a.shape #a是一行三列的数组
Out[6]:
(1, 3)
In [7]:
a=np.array([1,2,3,4,5,6])
a.shape #显示结果为6,说明有6个元素
Out[7]:
(6,)
In [8]:
a=a.reshape((2,-1)) #将a设置为2行3列的数组
a.shape
Out[8]:
(2, 3)
In [9]:
a
Out[9]:
array([[1, 2, 3], [4, 5, 6]])
In [10]:
a=a.reshape((-1,2)) #将a转换成3行2列的数组,所以-1可以放在任何位置
a.shape
Out[10]:
(3, 2)
In [11]:
a
Out[11]:
array([[1, 2], [3, 4], [5, 6]])
In [12]:
a[2,0]=55 #将5(第3行1列,从0开始,所以是2,0)改为55
a
Out[12]:
array([[ 1, 2], [ 3, 4], [55, 6]])
zeros 元素全是0的矩阵 ones 元素全是1的矩阵
In [13]:
a=np.zeros((3,2)) #3行2列的0矩阵
b=np.ones((3,2)) #3行2列的1矩阵
print(a,'\n',b)
[[0. 0.] [0. 0.] [0. 0.]] [[1. 1.] [1. 1.] [1. 1.]]
full函数
In [14]:
a=np.full((2,2),0) #2行2列的元素为0的矩阵
b=np.full((2,1),1) #2行1列的元素为1的矩阵
c=np.full((3,4),3) #3行4列的元素为3的矩阵
print('a=',a,'\n','b=',b,'\n','c=',c)
a= [[0 0] [0 0]] b= [[1] [1]] c= [[3 3 3 3] [3 3 3 3] [3 3 3 3]]
eye函数 创建单位矩阵
In [15]:
a=np.eye(3)
a
Out[15]:
array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
random.random 随机创建一个n*m个元素为0~1的矩阵
In [16]:
a=np.random.random((3,4))
a
Out[16]:
array([[0.41649546, 0.78422125, 0.40328815, 0.89947211], [0.37932431, 0.34892845, 0.04160069, 0.77451545], [0.14348274, 0.84981272, 0.67884397, 0.52761756]])
indexing 数组索引
In [17]:
a=np.array([[1,2,3,4], #第0行or倒数第-3行
[5,6,7,8], #第1行or倒数第-2行
[9,10,11,12]]) #第2行or倒数第-1行
a[-3:,1:3]
Out[17]:
array([[ 2, 3], [ 6, 7], [10, 11]])
In [18]:
a[1,-2] #取第2行倒数第二个数
Out[18]:
7
arange
In [19]:
a[np.arange(2),1]+=10 #在前2行的第1列的两个元素加10
a
Out[19]:
array([[ 1, 12, 3, 4], [ 5, 16, 7, 8], [ 9, 10, 11, 12]])
In [20]:
np.arange(3,7) #3~6产生指定范围的数组
Out[20]:
array([3, 4, 5, 6])
In [21]:
result_index=a>10 #a中的元素大于10的为True,其余为False
result_index
Out[21]:
array([[False, True, False, False], [False, True, False, False], [False, False, True, True]])
In [22]:
a[a>10] #显示出a中大于10的元素
Out[22]:
array([12, 16, 11, 12])
元素的数据类型
In [23]:
a=np.array([1,2])
a.dtype
Out[23]:
dtype('int32')
In [24]:
a=np.array([1.2,3]) #当有整数和小数时,默认都为小数
a.dtype
Out[24]:
dtype('float64')
In [25]:
a=np.array([1.1,2.6],dtype=np.int64) #将小数转换成整数类型
a
Out[25]:
array([1, 2], dtype=int64)
数学运算与常用函数
加
In [26]:
a=np.array([[1,2],
[3,4]])
b=np.array([[5,6],
[7,8]])
a+b
Out[26]:
array([[ 6, 8], [10, 12]])
In [27]:
np.add(a,b)
Out[27]:
array([[ 6, 8], [10, 12]])
减
In [28]:
np.subtract(a,b) #或写为a-b
Out[28]:
array([[-4, -4], [-4, -4]])
乘
In [29]:
np.multiply(a,b) #或写为a*b
Out[29]:
array([[ 5, 12], [21, 32]])
除
In [30]:
np.divide(a,b) #或写为a/b
Out[30]:
array([[0.2 , 0.33333333], [0.42857143, 0.5 ]])
开方
In [31]:
np.sqrt(a)
Out[31]:
array([[1. , 1.41421356], [1.73205081, 2. ]])
In [32]:
a=np.array([[1,2],[3,4]])
b=np.array([[1,2,3],[4,5,6]])
a.dot(b) #a*b,或写为np.dot(a,b)
Out[32]:
array([[ 9, 12, 15], [19, 26, 33]])
常用函数
In [33]:
a
Out[33]:
array([[1, 2], [3, 4]])
In [34]:
np.sum(a) #对a内的元素求和
Out[34]:
10
In [35]:
np.sum(a,axis=0) #axis为0时对列操作,每一列的元素相加
Out[35]:
array([4, 6])
In [36]:
np.sum(a,axis=1) #axis为1时对行操作,每一行的元素相加
Out[36]:
array([3, 7])
mean函数:求平均值
In [37]:
np.mean(a) #a中所有元素和的平均值
Out[37]:
2.5
In [38]:
np.mean(a,axis=0) #a中每列和的平均值
Out[38]:
array([2., 3.])
uniform函数:在制定区间随机产生一个小数
In [39]:
np.random.uniform(3,4)
Out[39]:
3.3895012763982115
tile函数:重复指定的次数
In [40]:
a
Out[40]:
array([[1, 2], [3, 4]])
In [41]:
np.tile(a,(1,3)) #行不重复,列元素重复三次
Out[41]:
array([[1, 2, 1, 2, 1, 2], [3, 4, 3, 4, 3, 4]])
argsort函数:对每行元素排序
In [42]:
a=np.array([[3,6,4,11],[5,11,2,3]]) #从小到大排序,从0开始
a.argsort()
Out[42]:
array([[0, 2, 1, 3], [2, 3, 0, 1]], dtype=int64)
In [43]:
a.argsort(axis=0) #对每列元素从小到大排序,从0开始
Out[43]:
array([[0, 0, 1, 1], [1, 1, 0, 0]], dtype=int64)
矩阵转置
In [44]:
a
Out[44]:
array([[ 3, 6, 4, 11], [ 5, 11, 2, 3]])
In [45]:
a.T #或者 np.transpose(a)
Out[45]:
array([[ 3, 5], [ 6, 11], [ 4, 2], [11, 3]])
广播
In [46]:
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=np.array([2,3,4])
for i in range(3):
a[i,:] += b #让a的每一行加b
a
Out[46]:
array([[ 3, 5, 7], [ 6, 8, 10], [ 9, 11, 13]])
In [47]:
#如果a是一个很大的数组,python需要经过大量的循环,耗时多,
#所以可以用tile函数,使b重复
a + np.tile(b,(3,1)) #因为a是3行,所以b重复3次行
Out[47]:
array([[ 5, 8, 11], [ 8, 11, 14], [11, 14, 17]])
In [48]:
a+b #numpy有广播的功能,将两个数组转化为相同的维度 进行运算
Out[48]:
array([[ 5, 8, 11], [ 8, 11, 14], [11, 14, 17]])
查看全部 -
shape
reshape
ones
full
eye
random.random
查看全部 -
#indexing
a = np.array([1,2,3]
[4,5,6]
[7,8,9])
a [-2:, 1:-1]
查看全部 -
#Array(数组,阵列) rank
import numpy as np
np.array(列表)
a = a.shape(元组) 维度:xx行xx列
a = a.reshape(元组)
a = np.zeros(元组)
a = np.ones(元组)
a = np.full(元组,数组中的值)
a = np.eys(元组,数组中的值)
查看全部 -
Array(数组) rank 数组维数 import numpy as np //引入numpy a = np.array([1,2,3]) //定义并初始化数组a type(a) //查看a的类型 a.shape //查看a的大小 a=a.reshape((1,-1)) //第一个1是只有一行,-1是一个占位符 a = np.zeros((3,3)) //创建行列都是3的元素全为0数组 a = np.ones((2,3)) //创建行是2列是3的元素全为1数组 a = np.full((3,3),0) //创建行列都是3的元素全为0数组 eye(创建单位矩阵) a = np.eye(3) reshape(1,-1) 这个函数中"-1"表示占位符,根据实际数组自动计算出来查看全部
-
Array(数组) rank 数组维数 import numpy as np //引入numpy a = np.array([1,2,3]) //定义并初始化数组a type(a) //查看a的类型 a.shape //查看a的大小 a=a.reshape((1,-1)) //第一个1是只有一行,-1是一个占位符 a = np.zeros((3,3)) //创建行列都是3的元素全为0数组 a = np.ones((2,3)) //创建行是2列是3的元素全为1数组 a = np.full((3,3),0) //创建行列都是3的元素全为0数组 eye(创建单位矩阵) a = np.eye(3)查看全部
-
a+b np.add(a,b) a-b np.subtract(a,b) a*b np.multiply(a,b) a/b np.divide(a,b) √a np.sqrt(a) 矩阵相乘 a.dot(b)或 np.dot(a,b)查看全部
-
a的每一行与b相加
对a数组进行循环(循环耗性能)
使用tile重复函数
直接相加(内部有广播处理机制,在缺失维度进行)
查看全部 -
同维度数组的加减乘除
加:a+b或者np.add(a,b)
减:a-b或者 np.subtract(a,b)
乘:a*b或者np.multiply(a,b)
除:a/b或者 np.divide(a,b)
数组开方:np.sqrt(a)
矩阵乘法(a列数=b行数才可进行):a.dot(b)或者np.dot(a,b)
sum求和函数
np.sum(a)
np.sum(a,axis=0)(aixs=0代表每列,axis=1代表每行)
mean平均值函数
np.mean(a,axis=1)
uniform指定范围的随机数
np.random.uniform(2,99)
tile数组重复函数
np.tile(a,(2,3))(列重复次数与行重复次数)
argsort数组行列排序函数
a.argsort()(每行排序,返回的是数组下标)
a.argsort(axis = 0) (每列排序)
矩阵转置
a.T或者np.transport(a)
查看全部 -
索引的第二种方法,使用arange函数
np.arange(3)(相当于从0到3,不包括3)——> array([0,1,2])
np.nrange(3,7——> array([3,4,5,6])
#第二列元素+10的3种写法
a[np.arange(3),1] +=10
a[np.arange(3),[1,1,1]] +=10
a[[0,1,2],[1,1,1]] +=10
#获取数组中大于10的元素
result_index = a >10
a[result_index]
查看全部 -
array的索引操作:
正数时是从0开始
倒数时是从-1开始
范围是2:4时是不包括4的
当我们在一个维度使用一个整数来索引时,维度就会减一
对a进行 b = a[2:3,1:3]的操作,可以得到 array([[10,11]]) ,仍是二维数组
查看全部
举报