我有一组包含字符串和浮点数的列表,例如:
import numpy as num
NAMES = num.array(['NAME_1', 'NAME_2', 'NAME_3'])
FLOATS = num.array([ 0.5 , 0.2 , 0.3 ])
DAT = num.column_stack((NAMES, FLOATS))
Run Code Online (Sandbox Code Playgroud)
我想将这两个列表堆叠在一起,并以列的形式将它们写入文本文件; 因此,我想使用numpy.savetxt(如果可能的话)来做到这一点.
num.savetxt('test.txt', DAT, delimiter=" ")
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到以下错误:
>>> num.savetxt('test.txt', DAT, delimiter=" ")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/numpy-1.8.0.dev_9597b1f_20120920-py2.7-macosx-10.8-x86_64.egg/numpy/lib/npyio.py", line 1047, in savetxt
fh.write(asbytes(format % tuple(row) + newline))
TypeError: float argument required, not numpy.string_
Run Code Online (Sandbox Code Playgroud)
理想的输出文件如下所示:
NAME_1 0.5
NAME_2 0.2
NAME_3 0.3
Run Code Online (Sandbox Code Playgroud)
如何将字符串和浮点数写入文本文件,可能避免使用csv(我想让其他人可读)?有没有另一种方法来做这个而不是使用numpy.savetxt?
我有一个现有的两列 numpy 数组,我需要向其中添加列名。在下面的块 1中dtype显示的玩具示例中传递那些通过工作。但是,对于我的实际数组,如Block 2所示,相同的方法会产生意外(对我而言!)更改数组维度的副作用。
如何将我的实际数组(在Y下面第二个块中命名的数组)转换为具有命名列的数组,就像我A在第一个块中为数组所做的那样?
第 1 块:(A未重塑维度的已命名列)
import numpy as np
A = np.array(((1,2),(3,4),(50,100)))
A
# array([[ 1, 2],
# [ 3, 4],
# [ 50, 100]])
dt = {'names':['ID', 'Ring'], 'formats':[np.int32, np.int32]}
A.dtype=dt
A
# array([[(1, 2)],
# [(3, 4)],
# [(50, 100)]],
# dtype=[('ID', '<i4'), ('Ring', '<i4')])
Run Code Online (Sandbox Code Playgroud)
第 2 块:(命名我的实际数组的列Y,重塑其维度)
import numpy as np
## Code to reproduce Y, the array …Run Code Online (Sandbox Code Playgroud) 我有一个numpy矩阵X,并且尝试使用以下代码更改列1的数据类型:
X[:, 1].astype('str')
print(type(X[0, 1]))
Run Code Online (Sandbox Code Playgroud)
但我得到以下结果:
<type 'numpy.float64'>
Run Code Online (Sandbox Code Playgroud)
有人知道为什么类型没有更改为str吗?更改X列类型的正确方法是什么?谢谢!
我想更改 numpy 列数据类型,但是当我替换原始 numpy 列时,dtype 不会成功更改。
import numpy as np
arraylist =[(1526869384.273246, 0, 'a0'),
(1526869385.273246, 1, 'a1'),
(1526869386.273246, 2, 'a2'),
(1526869387.273246, 3, 'a3'),
(1526869388.273246, 4, 'a4'),
(1526869389.273246, 5, 'a5'),
(1526869390.273246, 6, 'a6'),
(1526869391.273246, 7, 'a7'),
(1526869392.273246, 8, 'a8'),
(1526869393.273246, 9, 'a9'),
(1526869384.273246, 0, 'a0'),
(1526869385.273246, 1, 'a1'),
(1526869386.273246, 2, 'a2'),
(1526869387.273246, 3, 'a3'),
(1526869388.273246, 4, 'a4'),
(1526869389.273246, 5, 'a5'),
(1526869390.273246, 6, 'a6'),
(1526869391.273246, 7, 'a7'),
(1526869392.273246, 8, 'a8'),
(1526869393.273246, 9, 'a9')]
array = np.array(arraylist)
array.dtype
dtype('<U32')
array[:,0]=array[:,0].astype("float64")
array[:,0].dtype
>>> dtype('<U32') …Run Code Online (Sandbox Code Playgroud)