import numpy as np
a = np.arange(9).reshape(3,-1)
a
array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
b = np.arange(10, 19).reshape(3, -1)
b
array([[10, 11, 12], [13, 14, 15], [16, 17, 18]])
```
> top = np.column_stack((a, np.zeros((3,3))))
> top
array([[ 0., 1., 2., 0., 0., 0.],
[ 3., 4., 5., 0., 0., 0.],
[ 6., 7., 8., 0., 0., 0.]])
“`
bottom = np.column_stack((np.zeros((3,3)), b))
bottom
array([[ 0., 0., 0., 10., 11., 12.], [ 0., 0., 0., 13., 14., 15.], [ 0., 0., 0., 16., 17., 18.]])
np.row_stack((top, bottom))
array([[ 0., 1., 2., 0., 0., 0.], [ 3., 4., 5., 0., 0., 0.], [ 6., 7., 8., 0., 0., 0.], [ 0., 0., 0., 10., 11., 12.], [ 0., 0., 0., 13., 14., 15.], [ 0., 0., 0., 16., 17., 18.]])
a=arange(9).reshape(3,-1)
b=arange(10,19)reshape(3,-1)
print concatenate((a,b)) #一行一行加下去,和row_stack有什么区别?
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[10 11 12]
[13 14 15]
[16 17 18]]
a=zeros(2);b=ones(2)
#我想要得到1*4的数组[0 0 1 1]
print a+b
[1 1]
#可以转换成list
print list(a)+list(b)
[0 0 1 1]
原文
from numpy import *
x=linspace(0,4,5)
array([0.,1.,2.,3.,4.])
x.shape
(5, )
#想把x从一行,变成一列,如下直接转置会失败:
y=transpose(x)
#正确的做法是:
x.shape=(5,1)
y=transpose(x)
#查看结果:
y
array([[0.,1.,2.,3.,4.]])
y.shape
(1,5)
原来transpose的操作依赖于shape参数,对于一维的shape,转置是不起作用的.
from numpy import *
s=[100,120,140]
t=[50,60,70]
y=[s,t]
print y
#[[100,120,140],[50,60,70]]
a=numpy.cov(y)
[[ 400. 200.] [ 200. 100.]]
x=[1,0,1]
y=[s,t,x]
a=numpy.cov(y)
[[ 4.00000000e+02 2.00000000e+02 0.00000000e+00] [ 2.00000000e+02 1.00000000e+02 0.00000000e+00] [ 0.00000000e+00 0.00000000e+00 3.33333333e-01]]
y=[[120,140,160],\ [50,60,70],\ [1,0,1]]
ymean_colomn=mean(y,0)#每列计算均值
ymean_row=mean(y,1)#每行计算均值
先假设已经存在一个N维数组X了,那么可以得到X的一些属性,这些属性可以在输入X和一个.之后,按tab键查看提示。这里明显看到了Python面向对象的特征。
import numpy as np
X.flags #数组的存储情况信息。
X.shape #结果是一个tuple,返回本数组的行数、列数、……
X.ndim #数组的维数,结果是一个数
X.size #数组中元素的数量
X.itemsize #数组中的数据项的所占内存空间大小
X.dtype #数据类型
X.T #如果X是矩阵,发挥的是X的转置矩阵
X.trace() #计算X的迹
np.linalg.det(a) #返回的是矩阵a的行列式
np.linalg.norm(a,ord=None) #计算矩阵a的范数
np.linalg.eig(a) #矩阵a的特征值和特征向量
np.linalg.cond(a,p=None) #矩阵a的条件数
np.linalg.inv(a) #矩阵a的逆矩阵
np.linalg.pinv(a) #矩阵a的伪逆矩阵
原文
from numpy import *
a=arrange(36)
print a
print type(a)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35]
<type 'numpy.ndarray'>
b=a.reshape(6,6)
print b
[[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23] [24 25 26 27 28 29] [30 31 32 33 34 35]]
#使用切片来读取第一行中的第二和第三个数,我们看下标[0,2:4],其中逗号前的数字表示第0轴下标取值范围,逗号之后表示第1维下标取值范围,2:4就表示[2-4)之间,左闭右开
c=b[0,2:4]
print c
d=b[2:4,2:4]
print d
[[2 3] [8 9]]
e=b[:,3]
print e
[ 3 9 15 21 27 33] #把一列变成一维行向量了
e=b[:,3:4]
print e
[[ 3] [ 9] [15] [21] [27] [33]] #6*1的矩阵
f=b[:,::2]
print f
[[ 0 2 4] [ 6 8 10] [12 14 16] [18 20 22] [24 26 28] [30 32 34]]
f=b[::2,::2]
print f
[[ 0 2 4] [12 14 16] [24 26 28]]
from numpy import *
x=arange(10,19).reshape(3,3)
diag(x)
from numpy import *
a=array([[1,2,3],[4,5,6],[7,8,9]])
print a.sum() #45 每个元素都相加
print a.sum(axis=0) #[12,15,18] 按列相加
print a.sum(axis=1) #[ 6 15 24] 按行相加
import numpy as np
print np.zeros((3,4))
[[ 0. 0. 0. 0.] [ 0. 0. 0. 0.] [ 0. 0. 0. 0.]]
print np.ones((3,4))
[[ 1. 1. 1. 1.] [ 1. 1. 1. 1.] [ 1. 1. 1. 1.]]
print np.eye(3)
[[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.]]