首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Numpy如何更改数组中的数据类型

Python Numpy如何更改数组中的数据类型
EN

Stack Overflow用户
提问于 2021-10-23 14:55:07
回答 2查看 50关注 0票数 0

我试图从包含整数的数组中计算信息,但是当我进行计算时,结果是foat的。我如何更改ndarry以接受0.xxx数字作为输入。目前我只得到了0。这是我一直在尝试运行的代码:

代码语言:javascript
复制
        ham_fields = np.array([], dtype=float)   # dtype specifies the type of the elements
        ham_total = np.array([], dtype=float)  # dtype specifies the type of the elements
        ham_fields = data[data[:, 0] == 0]  # All the first column of the dataset doing a check if they are true or false
        ham_sum = np.delete((ham_fields.sum(0)),0)  # Boolean indices are treated as a mask of elements to remove none Ham items
        ham_total = np.sum(ham_sum)
        ham_len = len(ham_sum)



        for i in range(ham_len):
            ham_sum[i] = (ham_sum[i] + self.alpha) / (ham_total + (ham_len * self.alpha))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-23 15:49:05

代码语言:javascript
复制
ham_fields = np.array([], dtype=float)

ham_fields = data[data[:, 0] == 0] 
ham_sum = np.delete((ham_fields.sum(0)),0)  

这一行将一个新的数组对象分配给ham_fields。第一个任务对你没有任何帮助。在Python中,变量不会在开始时声明。

如果dataint数据类型,那么ham_fields也有。你可以用另一个任务来改变这一点。

代码语言:javascript
复制
ham_fields = ham_fields.astype(float)

ham_sum与派生它的ham_fields具有相同的dtype

将浮点数分配给int数据类型数组的元素不会更改数据类型。

代码语言:javascript
复制
    for i in range(ham_len):
        ham_sum[i] = (ham_sum[i] + self.alpha) / (ham_total + (ham_len * self.alpha))

如果self.alphaham_total是标量,那么您应该能够

代码语言:javascript
复制
ham_sum = (ham_sum + self.alpha)/(ham_toal + (ham_len * self.alpha))

这将创建一个新的数组,该数组将是浮点数,并将其赋给ham_sum变量。这是一个新的赋值(而不是修改),因此保留了浮动数据类型。或者,为了清楚起见,将其分配给一个新的变量名。

票数 2
EN

Stack Overflow用户

发布于 2021-10-23 15:16:08

您可以在计算后使用astype( int )将其转换为int数组

代码语言:javascript
复制
import numpy as np

array1 = np.array([1, 2, 3])
print(array1.dtype)
#output: int64

array2 = np.array([2, 3, 4])
print(array2.dtype)
#output: int64

array3 = array1 / array2
print(array3.dtype)
#output: float64

array4 = array3.astype(int)
print(array3.dtype)
#output: int64

您也可以通过使用括号在计算中执行此操作:

代码语言:javascript
复制
array3 = (array1 / array2).astype(int)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69689289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档