# 导入名为numpy的包,命名为np
import numpy as np
# 给np.array()函数传递python序列对象
a=np.array([1,2,3,4])
b=np.array((5,6,7,8))
c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])
print('a = ',a)
print('b = ',b)
print('c = ',c)
输出结果
# 也可以用zeros, ones, empty和full函数,创建指定大小,值为0/1/空/定数值的数组
zz=np.zeros((2,3,4))
oo=np.ones((2,3,4))
ee=np.empty((2,3,4))
ff=np.full((2,3,4),999)
print('zz = ', zz)
print('oo = ', oo)
print('ee = ', ee)
print('ff = ', ff)
# empty只分配内存,不赋值,最快。但是里面的内容是啥就不一定了!使用empty创建的ndarray,一定得初始化再使用。
输出结果
# 创建形状类型与a相同的数组
za = np.zeros_like(a)
oa = np.ones_like(a)
ea = np.empty_like(a)
fa = np.full_like(a,999)
c = np.array([[[1,2,3,4],[5,6,7,8],[9,10,11,12]],[[13,14,15,16],[17,18,19,20],[21,22,23,24]]])
print(c.shape)
print(c) # 2片,3行,4列(第0轴长度为2,第1轴长度为3,第2轴长度为4)
# 改变数组的形状
c.shape = (2,4,3) # 注意这不是转置!!!改变形状之后,数据的顺序是不变的。
print(c.shape)
print(c)
# 用-1表示这一个维度的长度是自动计算的
c.shape = 3,-1
print(c.shape)
print(c)
# 使用reshape创建指定形状的新数组
d = c.reshape((2,3,4))
print('d.shape = ', d.shape)
print('d = ', d)
# c的形状不变
print('c.shape = ', c.shape)
# 改变d的元素,c的元素仍会改变!
# 完全复制建议使用copy.deepcopy()
c[0,0] = 2233
print('c = ', c)
print('d = ', d)
# 看看ndarray c的类型
print(c.dtype)
# 创建array的默认数据类型是?
a = np.array([1,2,3,4])
print(a.dtype)
b = np.array([1.0, 2.0, 3.0, 4.0])
print(b.dtype)
c = np.zeros(4)
print(c.dtype)
# 创建数组时指定数据类型
ai32 = np.array([1, 2, 3, 4], dtype=np.int32)
af = np.array([1, 2, 3, 4], dtype=float)
ac = np.array([1, 2, 3, 4], dtype=complex)
# 其中np.int32时numpy的数据类型;float和complex是python内置的型,会自动转换为numpy的数据类型
print(ai32.dtype)
print(af.dtype)
print(ac.dtype)
# 数组的类型转换
t1 = np.array([1, 2, 3, 4], dtype=np.float)
t2 = np.array([1, 2, 3, 4], dtype=np.complex)
t3 = t1.astype(np.int32)
t4 = t2.astype(np.complex64)
print(t1.dtype)
print(t2.dtype)
print(t3.dtype)
print(t4.dtype)
# 通过开始值、终值和步长来创建等差数列
np.arange(0, 1, 0.1) # 从0开始,到1结束,步长0.1,注意1不在数组中!
# 通过开始值、终值和元素个数创建等差数列
np.linspace(0, 1, 10) # 从0开始,到1结束,10个元素的等差数列
# np.linspace(0, 1, 10, endpoint=False) # 可以通过endpoint参数定是否包含终值,默认值为True,即包含终值
# 通过开始值、终值和元素个数创建等比数列
# np.logspace(0, 2, 5) # 从0开始,到2结束,5个元素的等比数列
np.logspace(0, 1, 12, base=2, endpoint=False) # 可以通过base更改底数,默认为10
# 可以通过endpoint参数指定是否包含终值,默认值为True
x = np.arange(5,0,-1)
a = x[np.array([True, False, True, False, False])]
b = x[x>2]
c = x[[True, False, True, False, False]]
print('x = ', x)
print('a = ', a)
print('b = ', b)
print('c = ', c)
x1 = np.array([1,2,3,4])
x2 = np.array([5,6,7,8])
y = x1 + x2 # add
print(y)
# 自定义ufunc
def myfunc(x):
return x**2 + 1
my_ufunc = np.frompyfunc(myfunc, 1, 1)
x = np.linspace(0,10,11)
y = my_ufunc(x)
print(y)
之后我们还会分享使用Python教程,欢迎大家持续关注。