【发布时间】:2019-06-14 04:16:33
【问题描述】:
我想将两个 np.datetime64 和 int 类型的 numpy 数组附加到另一个数组。
这会导致错误。我该怎么做才能纠正这个问题?
如果我将向量附加到自身(即:np.append(c,c,axis=1) 或 np.append(a,a,axis=1)),它可以正常工作
numpy 版本:1.14.3
import numpy as np
a = np.array([['2018-04-01T15:30:00'],
['2018-04-01T15:31:00'],
['2018-04-01T15:32:00'],
['2018-04-01T15:33:00'],
['2018-04-01T15:34:00']], dtype='datetime64[s]')
c = np.array([0,1,2,3,4]).reshape(-1,1)
c
Out[2]:
array([[0],
[1],
[2],
[3],
[4]])
d = np.append(c,a,axis=1)
Traceback (most recent call last):
File "/home/user/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2963, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-3-10548a83d1a2>", line 1, in <module>
d = np.append(c,a,axis=1)
File "/home/user/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py", line 5166, in append
return concatenate((arr, values), axis=axis)
TypeError: invalid type promotion
【问题讨论】:
-
您期待什么
dtype和shape?请记住,一个 numpy 数组只有一个dtype(尽管它可能是复合的)。 -
虽然这不是问题,但不要养成使用
np.append的习惯。这是一种使用np.concatenate的名称不佳的方式。 -
感谢您对
np.concatenate的建议。您能否向 numpy 新手解释一下,为什么np.concatenate比np.append更好?提前致谢! -
np.concatenate是基本函数。查看np.append的代码。它只是调整输入(只有 2 个)并调用concatenate。但不仅如此,人们还倾向于滥用它,认为它就像附加列表一样。它不是。有几个stack函数也使用concatenate。np.stack可能是其中最有用的。但是你也可以看看他们的代码。