目录
- numpy核心对象是多维数组
- 方括号的深度
- numpy数组怎么index
- 举例:高频函数画图
numpy核心对象是多维数组
numpy 可以说并没有矩阵的概念,它的核心思维方式是多维数组。
>>> np.zeros((256,256)) #产生一个256×256的全0矩阵需要两个括号,行列均需赋值。
或
>>> np.zeros([256,256])
方括号的个数决定深度
tri1 = np.float32([[360,200], [60,250], [450,400]])
triangle = np.float32([[[360,200], [60,250], [450,400]]])
print(np.shape(tri1))
print(np.shape(triangle))
(3, 2)
(1, 3, 2)
除非强行参数升维
b = np.array([1, 2, 3], ndmin=2)
print(np.shape(b))
(1, 3)
c = np.array([[1, 2], [3, 4]],dtype=complex)
print(np.shape(c))
print(c)
(2, 2)
[[1.+0.j 2.+0.j]
[3.+0.j 4.+0.j]]
看看numpy数组怎么index
triangle = np.float32([[[360,200], [60,250], [450,400]]])
print(triangle[0][2][1])
print(triangle[0,2,1])
print(triangle[0][2,1])
print(triangle[0,1:])
print(triangle[0,1,:])
400.0
400.0
400.0
[[ 60. 250.]
[450. 400.]]
[ 60. 250.]
numpy有个子类是用来矩阵运算,但是完全没必要用到,多维数组可以完全替代。
A=np.mat('1 2; 3 4')
print(A)
type(A)
[[1 2]
[3 4]]
numpy.matrixlib.defmatrix.matrix
下面这个例子很有代表性
a = np.array([1,2,3])
print(a)
print(a.T)
输出:
[1 2 3]
[1 2 3]
即一维数组转置仍然是一维数组,而不是matlab里的行向量转置为列向量。
matlab的核心思想是矩阵
zeros(256) %即生成256×256全0矩阵。
举例:高频函数画图
函数画图numpy和matlab基本一样
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 10.0, 0.01)
s = t**3*np.exp(-t)
s1 = t**3
s2 = np.exp(-t)
plt.figure()
plt.subplot(3,1,1)
ax=plt.subplot(3,1,1)
plt.plot(t,s)
ax.set(xlabel='frequency (THz)', ylabel=' The amount of energy \n per unit surface area \n per unit time per unit solid angle \n per unit frequency ',
title='Temperature T0')
ax.grid()
plt.subplot(3,1,2)
plt.plot(t,s1)
ax=plt.subplot(3,1,2)
ax.set(xlabel='frequency (THz)')
ax.grid()
plt.subplot(3,1,3)
plt.plot(t,s2)
ax=plt.subplot(3,1,3)
ax.set(xlabel='frequency (THz)')
ax.grid()
还有一个值得一提的命令,linspace()
x=numpy.linspace(2.0, 3.0, num=5)