【问题标题】:Can't print a single row of an array I got an too many indices for array error?无法打印数组的单行我得到了太多的数组错误索引?
【发布时间】:2021-02-26 14:28:44
【问题描述】:

我正在尝试打印单行数组,下面的代码可以正常工作

a = np.array([[1,2,6],[4,5,8],[8,3,5],[6,5,4]])
#Print second row
print(a[1,:])

我的数组有点复杂(100 行 8 列)。

这是我的代码,当我想打印第二列时,我收到一个错误说索引太多。

import numpy as np
for i in np.arange(0, 106, 1.060606061):
   
                                        
    wl0 = 7.906e-07*i**4 - 0.0001709*i**3 + 0.009718*i**2 - 0.05276*i + 0.06008
    wl05 = 3.956e-07*i**4 - 8.837e-05*i**3 + 0.003919*i**2 + 0.1048*i - 0.1198
    wl1 = 1.122e-07*i**4 - 2.857e-05*i**3 - 0.0002459*i**2 + 0.2124*i - 0.271
    wl2 = -1.515e-07*i**4 + 2.998e-05*i**3 - 0.004428*i**2 + 0.3117*i - 0.3906
    wl3 = -3.898e-07*i**4 + 8.275e-05*i**3 - 0.008118*i**2 + 0.3918*i - 0.3196
    wl4 = -6.135e-07*i**4 + 0.0001285*i**3 - 0.01082*i**2 + 0.4195*i + 0.5945
    wl5 = -6.745e-07*i**4 + 0.0001367*i**3 - 0.01061*i**2 + 0.3661*i + 2.028
    wl6 = -7.106e-07*i**4 + 0.0001407*i**3 - 0.01027*i**2 + 0.3217*i + 3.049
     
    new = np.array([wl0, wl05, wl1, wl2, wl3, wl4, wl5, wl6])
    
    print(new[1,:])
  

也尝试了以下代码

new = np.array([[wl0], [wl05], [wl1], [wl2], [wl3], [wl4], [wl5], [wl6] ])

但它仍然不起作用。我只想打印一个特定的行(本例中为第二行。这并不重要,因为我将一一打印所有行)

【问题讨论】:

  • 看起来所有的w... 都是标量,所以new 是一个形状为 (10,) 的一维数组。检查shapedtype。您还可以使用每个 i 创建一个新的 new,并且不要保留以前的 new。比较a.shapenew.shape
  • 为什么是无点is?那些不是在乌克兰使用的吗?

标签: python arrays list numpy printing


【解决方案1】:

我认为..这应该可行..

import numpy as np
new=[]
for i in np.arange(0, 106, 1.060606061):
    wl0 = 7.906e-07*i**4 - 0.0001709*i**3 + 0.009718*i**2 - 0.05276*i + 0.06008
    wl05 = 3.956e-07*i**4 - 8.837e-05*i**3 + 0.003919*i**2 + 0.1048*i - 0.1198
    wl1 = 1.122e-07*i**4 - 2.857e-05*i**3 - 0.0002459*i**2 + 0.2124*i - 0.271
    wl2 = -1.515e-07*i**4 + 2.998e-05*i**3 - 0.004428*i**2 + 0.3117*i - 0.3906
    wl3 = -3.898e-07*i**4 + 8.275e-05*i**3 - 0.008118*i**2 + 0.3918*i - 0.3196
    wl4 = -6.135e-07*i**4 + 0.0001285*i**3 - 0.01082*i**2 + 0.4195*i + 0.5945
    wl5 = -6.745e-07*i**4 + 0.0001367*i**3 - 0.01061*i**2 + 0.3661*i + 2.028
    wl6 = -7.106e-07*i**4 + 0.0001407*i**3 - 0.01027*i**2 + 0.3217*i + 3.049
    new.append([wl0, wl05, wl1, wl2, wl3, wl4, wl5, wl6])
new=np.asarray(new)    
print(new[1,:])

输出:

[ 0.01485117 -0.00434499 -0.04603783 -0.06495451  0.08691187  1.02740552  2.40451508  3.37881136]

【讨论】:

  • 它工作得很好,但我无法理解它背后的想法?
  • 您的 numpy 数组只是一个一维数组,它没有索引 1。尝试采用新数组的形状。你会明白的。您正在创建只有一组 w* 值的数组。如果你想要一个多维数组,你需要继续追加。
猜你喜欢
  • 2018-03-04
  • 2017-08-13
  • 1970-01-01
  • 2019-11-16
  • 2020-01-18
  • 2019-07-30
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多