python定义矩阵内数据类型_用数据类型创建numpy矩阵

本文介绍了如何使用numpy在Python中创建带有特定数据类型的矩阵。通过定义dtype结构,然后使用zeros、hstack或直接赋值的方法动态或静态地构建矩阵。还讨论了csv输出和 savetxt 函数的使用,以及如何根据需要调整fmt参数来简化数据保存。
摘要由CSDN通过智能技术生成

我不喜欢增量增长阵列,但有一种方法可以做到:import numpy as np

def grow_table():

dt=np.dtype({'names':['A','B','C'],'formats':['i','i','d']})

S = np.zeros(0, dtype=dt)

for i in range(5):

X = np.array((i, 2*i, i+.5), dtype=dt)

S = np.hstack((S, X))

return S

if __name__ == '__main__':

S = grow_table()

print S

print S['A']

制作:

^{pr2}$

S以形状(0,)开头。X有形状();它是0d。最后S有形状{}。我们必须使用hstack,因为我们正在创建一个1d数组;一个元组数组。这就是你用这样的dtype得到的结果。同样,当像这样给数组赋值时,这些值需要在元组中,而不是在列表中。在

更好的增量构建是:def make_table(N=5):

dt=np.dtype({'names':['A','B','C'],'formats':['i','i','d']})

S = np.zeros(N, dtype=dt)

for i in range(N):

S[i] = (i, 2*i, i+.5)

return S

甚至使用元组列表:def better(N=5):

dt=np.dtype({'names':['A','B','C'],'formats':['i','i','d']})

L = [(i, 2*i, i+.5) for i in range(N)]

return np.array(L, dtype=dt)

对于csv输出:S = better()

np.savetxt('S.txt', S, fmt='%d, %d, %f')

产生:0, 0, 0.500000

1, 2, 1.500000

...

尝试savetxt一个(N,1)数组会产生一个或多个错误。在

savetxt试图写入for row in S:

write(fmt%row)

对于(N,)数组,row是(0, 0, 0.5),但是对于(N,1),它是{}。在

^{8}$

工作,生产(0, 0, 0.5)

(1, 2, 1.5)

...

但是如果您只想保存两列int和一个float,就不需要这个dtype。只需让fmt完成所有工作:def simple(N=5):

return np.array([(i, 2*i, i+.5) for i in range(N)])

S = simple()

np.savetxt('S.txt',S, fmt='%d, %d, %f')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值