Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取一维数组numpython的元素_Python_Arrays_Pandas_Numpy_Csv - Fatal编程技术网

获取一维数组numpython的元素

获取一维数组numpython的元素,python,arrays,pandas,numpy,csv,Python,Arrays,Pandas,Numpy,Csv,如何打印element\u valnumpy数组的最后一个值。它是[2.2.30.]的第二个索引,即30。因此,这些值将类似于30,40,50…670680。既然numpy数组是一维的,我怎么能做到呢 input.csv文件: element,LNPT,SNPT,NLP,NSP,TNT,TPnL,MxPnL,MnPnL,MxU,MxD [ 2. 2. 30.],0,0,4,4,8,-0.1,-0.0,-0.1,17127,-3 [ 2. 2. 40.],0,0,2,2,4,0.0,-0.0,

如何打印
element\u val
numpy数组的最后一个值。它是
[2.2.30.]
的第二个索引,即30。因此,这些值将类似于
30,40,50…670680
。既然numpy数组是一维的,我怎么能做到呢

input.csv文件:

element,LNPT,SNPT,NLP,NSP,TNT,TPnL,MxPnL,MnPnL,MxU,MxD
[ 2.  2. 30.],0,0,4,4,8,-0.1,-0.0,-0.1,17127,-3
[ 2.  2. 40.],0,0,2,2,4,0.0,-0.0,-0.0,17141,-3
[ 2.  2. 50.],0,0,2,2,4,0.0,-0.0,-0.0,17139,-3
[ 2.  2. 60.],2,0,6,6,12,0.5,2.3,-1.9,17015,-3
[ 2.  2. 70.],1,0,4,4,8,0.3,0.3,-0.0,17011,-3
代码:

输出:

['[ 2.  2. 30.]' '[ 2.  2. 40.]' '[ 2.  2. 50.]' ... '[  6.    7.5 660. ]'
 '[  6.    7.5 670. ]' '[  6.    7.5 680. ]']
使用,并手动将
df.element
列转换为真正的numpy数组:

df=pd.read\u csv('input.csv'))
element_vals=df.element.str.strip('[]').str.split(expand=True).astype(float.to_numpy()
#数组([[2,2,30.],
#        [ 2.,  2., 40.],
#        [ 2.,  2., 50.],
#        [ 2.,  2., 60.],
#        [ 2.,  2., 70.]])
然后您可以按预期编制索引:

element\u vals[:,2]
#数组([30,40,50,60,70.]))

该输出看起来像是您将数组打印到文件中,而不是实际写入CSV,然后尝试以CSV形式读取该文件。
print
不应用作保存NumPy数组数据的方式。默认情况下,它会丢弃数据,即使不丢弃数据,也很难解析。使用
numpy.save
numpy.load
,或
numpy.savetxt
numpy.loadtxt
。(实际上,考虑到间距和缺少额外括号等细节,您可能单独打印了许多数组,可能是打印2D数组的每一行。无论哪种方式,这都是一个坏主意,
pandas.read_csv
是错误的阅读工具。)另外,
element\u vals
可能丢失了第一个数据行,因为
read\u csv
可能将其解释为列标题。如果我直接从numpy读取,则会出现错误,
[2.2.30]
当我使用
genfromtxt
时,值被输出为
nan
,因此我使用了pandas。我已经更新以显示问题的内容,以显示
input.csv
的外观。
['[ 2.  2. 30.]' '[ 2.  2. 40.]' '[ 2.  2. 50.]' ... '[  6.    7.5 660. ]'
 '[  6.    7.5 670. ]' '[  6.    7.5 680. ]']