1.数组切片和列表切片最大的区别是
数组切片不会创建原数组的副本,而列表切片是创建原数组的副本再进行操作
import numpy as np
a = np.array([0,1,2,3])
b = a[:2]
b[:] = 5 #必须写成b[:]切片形式才有此效果,如果写成b=5,相当于重新定义了变量b,a不会发生修改
print(a)
#输出[5 5 2 3]
此外还需要注意numpy数组没有append,insert等操作
对于列表:
a = [0, 1, 2, 3]
b = a[:2]
b[1] = 0 #列表不可以写成b[:]=0,多对一无法实现,只能写成一对一的形式
print(a) #输出[0, 1, 2, 3]
2.布尔型数值组成的Numpy数组不能使用and,or等逻辑语句,只能使用&,| 等符号进行与,或运算
import numpy as np
a = np.array([True,True,False])
b = np.array([False,False,False])
print(a and b) #报错
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
print(a & b)
输出:[False False False]
布尔型数值组成的列表可以使用and,or等语句,但是不能使用&,| 等符号
3.numpy中的meshgrid()函数
给定值是两个一维数组,返回两个2维数组,规模是n*m,其中m是第一个一维数组的元素个数,n为第二个一维数组的元素个数
import numpy as np
x = np.array([1,2,3])
y = np.array([4,5])
X,Y = np.meshgrid(x,y) #输入只要是两个向量,x.T和y.T,x.T和y,或者x,y.T都可以
print(X)
print(Y)
输出:
[[1 2 3]
[1 2 3]]
[[4 4 4]
[5 5 5]]
目的就是为了形成(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)
图片加以理解:
此时我们要求每个点的(x**2 + y**2)再开根号就方便了:
z = np.sqrt(X**2 + Y**2)
print(z)
输出:
[[ 4.12310563 4.47213595 5. ]
[ 5.09901951 5.38516481 5.83095189]]
4.numpy中