对于游戏窗口中的每个像素,是否有可能(就性能而言)拥有一个多维数组,每个像素包含一个8位整数?我需要及时更新基于此数组的游戏窗口。
我的目标如下:
import numpy
window_array = numpy.zeros((600, 600), dtype=numpy.int8)
#draw the screen
for (y, x), value in numpy.ndenumerate(window_array):
if value == 1:
rgb = (0, 0, 0)
elif value == 2:
rgb = (50, 5
我有一个多维numpy数组,我需要对其进行修改,使其元素仅根据其中一维的索引进行修改。当然,我可以使用for循环来实现这一点,如下面的简化示例所示 import numpy as np
a = np.ones( (2,10) )
for ii in range(a.shape[1]):
a[:,ii] *= ii 如果数组变得非常大,这可能会减慢执行速度,我想知道是否有一些聪明的方法来避免使用for循环?
假设我有一些物理计算。我想知道初始化数组来存储的最佳实践是什么,例如,位置和速度数据,我在循环中附加了值。我的问题是,是为每个信息(位置、速度、加速度)初始化单个列表/numpy数组,还是初始化一个多维列表/numpy数组或熊猫数据数组来存储这些数据并标记这些列。
import numpy as np
import matplotlib.pyplot as plt
import math
position = []
velocity = []
acceleration = []
for t in np.arange(0, 100):
#some calculations which
我喜欢使用来自numpy的numpy,因为它是一种资源懒惰的方式来构建np.array对象。但是,它似乎不支持多维数组,而多维数组也非常有用。
import numpy as np
def fun(i):
""" A function returning 4 values of the same type.
"""
return tuple(4*i + j for j in range(4))
# Trying to create a 2-dimensional array from it:
a = np.fromit
我希望能够在程序启动时拥有一个空数组,在运行时填充它,并删除其中的内容。这可能是一个多维数组。那我该怎么做?
例如。
int randomNumber;
int RandomString;
int array[] = {};
for(int i;int i < 10; int i ++){
array + random variable;
array + random string;
}
所以,在它看起来像:
array[] ={随机,随机字符串},{随机,随机字符串}}
这个是可能的吗?
我有过 int[,,,] arr = new int[5, 6, 7, 8]; // c#
arr = np.zeros((5, 6, 7, 8)) # Python 具有5 * 6 * 7 * 8单元的4d阵列。 我想把它切成c#,就像numpy那样 var mySlice = arr[2:4, 0, :2, :]; // Won't work in C#, but looking for a way to do this. return type should be int[,,] A 3d array with 2 * 1 * 2 * 8 cells.
my_slice = a
我目前有一个numpy多维数组(类型为float)和一个numpy列数组(类型为int)。我想把它们组合成一个多维的numpy数组。
import numpy
>> dates.shape
(1251,)
>> data.shape
(1251,10)
>> test = numpy.hstack((dates, data))
ValueError: all the input arrays must have same number of dimensions
要显示数组类型不同,请执行以下操作:
>> type(dates[0])
<
我正在尝试添加以创建一个多维数组,其中每行输入4个随机数。下面的代码不起作用。我怎么才能修复它呢?
import numpy as np
import random
Array = np.array([[]])
for i in range(3):
for k in range(4):
Array[i][k]= np.append(Array[i][k], random.randint(0,9))
预期输出:
[[1,3,4,8],
[2,3,6,4],
[7,4,1,5],
[8,3,1,1]]
我有一个形状为(40,926)的多维numpy数组。我还有一个数字数组形状(126),它具有表示有效列的随机索引。
现在,我想要做的是根据这个索引掩码过滤我的多维数组:所有不同于这个索引的列都必须被删除,结果形状(40,126)
所以,就像这样:
data = np.array([[]])
sel = np.asarray(idx.split(','))
print sel.shape #(126) array 404,410,500...1300
print X.shape #(40,926)
for x in wave: #(926) array 400,401,402
我有一个多维的numpy数组,我想使用它的一些元素来构造一个一维数组。我需要考虑的因素是根据它们的指数给出的,例如:
inds = [(0,0), (0,1), (1,1), (1,0), (0,2)]
我用直截了当的方式解决了这个问题:
ls = []
for i, j in inds:
ls += [a[i,j]]
它给出了预期的结果。然而,我意识到这个解决办法对我来说太慢了。是否有可能以更有效的方式这样做?
我想存储多维数组,它存储类似python的内容。目前,它看起来像是:
a = [[{'col':i,'row':j} for i in range(9)] for j in range(9)]
我知道,numpy是完美的,如果你想做数学,比如处理矩阵。我想快点做的事:
多维索引访问
使用多维索引更改值
我不知道如何处理普通的Python列表。因为就像
idx = [2,3]
print(a[idx])
根本不存在,对吧?它应该打印出{'row':2,'col':3}
谢谢您的想法,如果numpy是更好的选择:如何
有没有一种纯Python转换的方法?
Python不仅可以表示一个一维的字节块.它们可以表示多维布局、非连续内存、复杂元素类型等。例如,在以下代码中:
In [1]: import numpy
In [2]: x = numpy.array([[1, 2], [3, 4]])
In [3]: y = x.T
In [4]: a = memoryview(x)
In [5]: b = memoryview(y)
a和b是2×2多维内存:
In [6]: a.shape
Out[6]: (2, 2)
In [7]: b.shape
Out[7]: (2, 2)
b表示a的转置,因此a[
我想在某些数据上运行sklearn的RandomForestClassifier,这些数据被打包成一个稀疏的numpy.ndarray。调用fit会给出ValueError: setting an array element with a sequence.。从其他帖子中我了解到,随机森林无法处理稀疏数据。
我期望对象有一个todense方法,但它没有。
>>> X_train
array(<1443899x1936774 sparse matrix of type '<class 'numpy.float64'>'
我对numpy多维数组还很陌生,而且被困在看起来应该是“容易”的概念上。
在下面的代码中,fakepng表示numpy数组中的RGBA映像。我想将α通道设置为0,用于该图像的每个纯黑色像素的[0,0,0],以使其透明。我可以使用嵌套的for循环来完成这个任务:
fakepng = np.array([[[0,0,0,255],[0,255,255,255]],[[255,255,0,255],[255,255,255,255]]])
rows, cols, channels = fakepng.shape
for x in range(0, rows):
for y in range(
我正在处理netcdf文件中的数据,多维变量,读取到numpy数组中。我需要扫描所有维度(numpy中的轴)中的所有值,并修改一些值。但是,我不知道任何给定变量的维数。当然,在运行时,我可以获得numpy数组的ndim和形状。如何在不预先知道维度或形状的情况下,通过所有值编写一个循环?如果我知道一个变量正好是二维,我会这样做。
shp=myarray.shape
for i in range(shp[0]):
for j in range(shp[1]):
do_something(myarray[i][j])