【问题标题】:making an array within an array in python在python中的数组中创建一个数组
【发布时间】:2017-06-20 04:24:26
【问题描述】:

我正在尝试在 python 中创建一个数组,如下所示:

[[3,0,-3,-4],[6,0,-2.44,-4]]

我可以在 matplotlib 的矢量图中使用它。

我尝试使用以下程序执行此操作:

data = np.loadtxt(sys.argv[1], dtype='str',delimiter=',', skiprows=1, usecols=(0,1,2,3,4,5,6,7))

x = data[:,0].astype(float)
u = data[:,6].astype(float)
v = data[:,7].astype(float)

soa = []
for t in range(0,2):
    print "At time ",x[t]," U is ",u[t]," and V is ",v[t]
    result = [x[t],0,u[t],v[t]] 
    soa = np.append(soa, [result])


print "soa is ",soa

当我运行程序时,我得到了输出:

soa 是 [ 3. 0. -3. -4。 6. 0. -2.44 -4。 ]

这不能在 matplotlib 中绘制为矢量图。如何调整上述脚本以将数组转换为格式:

 [[3,0,-3,-4],[6,0,-2.44,-4]]

其中 [3,0,-3,-4] 和 [6,0,-2.44,-4] 是我可以在 matplotlib 中绘制的向量?

【问题讨论】:

  • 快速修复,soa = soa.reshape((2,-1))

标签: python arrays for-loop matplotlib vector


【解决方案1】:

np.append 与普通数组 append 不同。

尝试:

for t in range(0,2):
    print "At time ",x[t]," U is ",u[t]," and V is ",v[t]
    result = [x[t],0,u[t],v[t]] 
    soa.append(result)

【讨论】:

    【解决方案2】:

    获得所需数组的最简单方法是简单地将数据中的列堆叠起来,然后在中间放一个零列

    data = np.loadtxt(sys.argv[1], dtype='str',delimiter=',', skiprows=1, 
                      usecols=(0,1,2,3,4,5,6,7))
    
    x = data[:,0].astype(float)
    u = data[:,6].astype(float)
    v = data[:,7].astype(float)
    
    soa = np.vstack((x,np.zeros(len(x)),u,v)).T
    
    print "soa is ",soa
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-18
      • 2020-08-02
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      相关资源
      最近更新 更多