我正在尝试减去一维数组:
probe = [1, 2, 3, 4, 5, 6]
nd数组中的每个元素:
k = np.array([["words words ", 1,1,3,4,6,7], ["blah blah", 2,8,7,5,3,2], [" please help me", 3,4, 5, 6, 7,1], [" What are you doing, man", 1,3,5,10,9,11]])
我已经删除了第k个数组的第0个索引,并将这些值存储在new_k中,以便现在可以在要比较的两个数组中的值之间进行比较。
new_k = k
new_k = np.delete(new_k, 0, axis=1)
我正在尝试在nd数组中找到最接近输入的值。我需要帮助。
到目前为止,我设法到达了这里,但我迷路了。:
for i in range(len(new_k)):
for j in range(len(new_k[0][1])):
temp[j] = (new_k[1][j] - probe[j])
new_k[i][1] = temp
print(new_k)
new_k2 = new_k*new_k
上面的代码抛出此错误:
TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')
还:我知道如何通过将单个值与值数组进行比较来获得“最接近的值”,但是我想通过将数组与数组进行比较
答案 0 :(得分:0)
np.asarray(k[:,1:], dtype=int) - probe
答案 1 :(得分:0)
问题在于numpy与普通列表不同,它一次仅包含唯一的类型元素。如果类型超过1,则所有类型都将转换为U32
的{{1}}。当您从列表中删除第一个元素时,其余元素仍然是字符串类型,而不是int类型。您应该已经将它们转换为string
。因此,该错误引发:
int
尝试时:
TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')
答案 2 :(得分:0)
Snackbar snackbar = Snackbar.make( coordinator_,
service_name+" Service Added To Cart!", 1000);
//setting the snackbar action button text size
View view = snackbar.getView();
TextView txt_action = (TextView) view.findViewById(android.support.design.R.id.snackbar_action);
TextView txt_text = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
txt_action.setTextSize(13);
txt_action.setAllCaps(false);
txt_text.setTextSize(13);
snackbar.setActionTextColor(ContextCompat.getColor(getActivity(), R.color.snackbar));
snackbar.setAction("View Cart", new View.OnClickListener() {
@Override
public void onClick(View v) {
//your code
}
});
snackbar.show();
In [263]: probe = [1, 2, 3, 4, 5, 6]
具有一个容纳字符串的k
:
dtype
但是通过分割第一列,其余的可以转换为整数数组:
In [264]: k = np.array([["words words ", 1,1,3,4,6,7], ["blah blah", 2,8,7,5,3,2
...: ], [" please help me", 3,4, 5, 6, 7,1], [" What are you doing, man", 1
...: ,3,5,10,9,11]])
In [265]: k
Out[265]:
array([['words words ', '1', '1', '3', '4', '6', '7'],
['blah blah', '2', '8', '7', '5', '3', '2'],
[' please help me', '3', '4', '5', '6', '7', '1'],
[' What are you doing, man', '1', '3', '5', '10', '9', '11']],
dtype='<U24')
那是一个(4,6)数组。 In [266]: k[:, 1:].astype(int)
Out[266]:
array([[ 1, 1, 3, 4, 6, 7],
[ 2, 8, 7, 5, 3, 2],
[ 3, 4, 5, 6, 7, 1],
[ 1, 3, 5, 10, 9, 11]])
为(6,);广播让我们减去:
np.array(probe)
答案 3 :(得分:0)
numpy数组并不意味着具有多种数据类型。 k
实际上是一个字符串数组,因此数组k
中没有要减去的数字数据类型。
如果您想保留字符串的第一列,则应查看pandas数据框。您可以将字符串保留为数据框的索引,但仍可以作为数字数据数组对其进行操作。使用数据,您可以执行以下操作:
df = pd.DataFrame(k[:, 1:].astype(int), index=k[:, 0])
df - probe