【问题标题】:Convert string array to numpy array将字符串数组转换为 numpy 数组
【发布时间】:2018-06-15 19:50:58
【问题描述】:

我正在尝试将字符串 '[ 0. 0. 1.]' 转换为 numpy 数组。

这是我编写的代码,但需要更复杂吗?

arr = []
s = '[ 0.  0.  1.]'
arr.append(int(s.split(" ")[1].replace("." , '')))
arr.append(int(s.split(" ")[3].replace("." , '')))
arr.append(int(s.split(" ")[5].replace("]" , '').replace("." , '')))

arr = np.array(arr)

print(arr)
print(type(arr))
print(type(arr[0]))

上面的代码打印:

[0 0 1]
<class 'numpy.ndarray'>
<class 'numpy.int64'>

有没有更简洁的方法将字符串 '[ 0. 0. 1.]' 转换为 numpy int 数组类型?

【问题讨论】:

  • 取决于您想要的灵活性。 np.array(s[1:-1].split(), float).astype(int)
  • 甚至np.matrix(s).A1.astype(int)
  • @PaulPanzer s = '[ 0. 0. 1.]' np.matrix(s) 返回 'TypeError: Invalid data string provided: ['
  • 奇怪,它对我有用。你在哪个版本?
  • 看起来它在 1.13.x 期间的某个时候发生了变化。所以如果你是 1.12 或更低,你将不得不做np.matrix(s[1:-1]).A1.astype(int)

标签: python numpy


【解决方案1】:

Numpy as 比所有答案都容易处理它:

s = '[ 0.  0.  1.]'
np.fromstring(s[1:-1],sep=' ').astype(int)

【讨论】:

    【解决方案2】:

    在:

    import numpy as np
    
    s = '[ 0.  0.  1.]'
    
    out = np.array([int(i.replace('.','')) for i in s[s.find('[')+1:s.find(']')].split()])
    
    print(type(out))
    

    输出:

    <class 'numpy.ndarray'>
    

    【讨论】:

      猜你喜欢
      • 2013-05-05
      • 1970-01-01
      • 2021-04-26
      • 2015-03-28
      • 2018-09-19
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多