arr = np.zeros((1000, 1000), dtype=int) 改为2进制1,0的数组
时间: 2023-11-29 07:57:08 浏览: 88
可以使用NumPy的随机函数生成0和1的数组,然后将其转换为int类型即可:
```python
import numpy as np
arr = np.random.randint(2, size=(1000, 1000)).astype(int)
```
这里使用了`np.random.randint()`函数生成一个0或1的随机数组,`size`参数指定数组的形状,最后使用`astype(int)`方法将数组元素类型转换为int类型。
相关问题
x_note = [] x_offset = [] for press_time_dict in midi_list: last_offset = Fraction(0, 1) sorted_keys = sorted(press_time_dict.keys(), key=lambda t: float(Fraction(t))) for i, key in enumerate(sorted_keys): note_arr = np.zeros(shape=(len(total_keys), len(duration_keys)), dtype=np.float32) for note, duration in press_time_dict[key]: note_arr[total_keys.index(note), duration_keys.index(duration)] = 1. note_arr[np.max(note_arr, axis=-1) == 0., duration_keys.index('0')] = 1. cur_offset = Fraction(key) x_offset.append(str(cur_offset - last_offset)) last_offset = cur_offset x_note.append(note_arr) x_note = np.stack(x_note, axis=0) offset_keys = list(set(x_offset)) x_offset_idx = np.array([offset_keys.index(offset_type) for offset_type in x_offset]) x_offset = np.eye(len(offset_keys), dtype=np.int32)[x_offset_idx] x_offset = np.array(x_offset, dtype=np.float32) np.save("notes_array.npy", x_note) np.save("offsets_array.npy", x_offset) np.save("note_keys_dict.npy", total_keys) np.save("note_offsets_dict.npy", offset_keys) np.save("note_durations_dict.npy", duration_keys)
这段代码的作用是将`midi_list`列表中的所有键值对转换为神经网络的输入格式。具体来说,它将每个键值对转换为一个二维数组,其中每行表示一个音符,每列表示一个持续时间。对于每个键值对,它还将其对应的偏移量记录在`x_offset`列表中。
在代码的第一部分中,它遍历`midi_list`中的每个键值对,并按照键的顺序将其排序。然后,它遍历排序后的键,并将其转换为一个二维数组。对于每个音符,它使用`total_keys`和`duration_keys`中的索引来确定其在数组中的位置,并将该位置的值设置为1。如果一个音符在该键值对中没有出现,则该位置的值为0。对于每个键值对,它还将持续时间为0的音符设置为1,以使这些音符可以被正确地处理。
在代码的第二部分中,它使用`x_offset`列表中的偏移量将每个键值对与其之前的键值对分开。然后,它将`x_note`和`x_offset`转换为NumPy数组,并将它们保存在`.npy`文件中。最后,它将`total_keys`、`offset_keys`和`duration_keys`保存为`.npy`文件,以便在模型训练过程中使用。
import socket import numpy as np import scipy.signal as signal from scipy.fftpack import fft,ifft from scipy.stats import pearsonr import matplotlib.pyplot as pltdef is_valid(corr_arr): for i in range(0, 25): if corr_arr[i] < 0.8: return False return True if __name__ == '__main__':udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 2.绑定本地的相关信息,如果一个网络程序不绑定,则系统会随机分配 dest_addr = ('192.168.4.2', 4444) # ip地址 和端口号,ip一般不用写,表示本机的任何一个ip udp_socket.bind(dest_addr) # 必须绑定自己的IP N = 32768 # 采样点数 fs = 48000 # 采样频率 n = np.arange(N) # 用于产生离散时间序列 f = n * fs / N # 生成频率序列,为后续作图做准备#将标准的chirp数据取出来作为标准 file_object = open('chirp2218.txt') try: chirp_data_str = file_object.read() chirp_data_spl = chirp_data_str.split(',') n = len(chirp_data_spl) chirp_data = np.zeros(4800, dtype=np.int16) for i in range(0, 4800): chirp_data[i] = int(chirp_data_spl[i]) finally: file_object.close() while True: recv_data = udp_socket.recvfrom(19200) n = len(recv_data[0])voice_data = recv_data[0]voice_data_del = np.zeros(9600, dtype=np.int16)
这段代码主要是一个Python程序,首先导入了一些Python的库,包括socket、numpy、scipy.signal、scipy.fftpack、scipy.stats和matplotlib.pyplot。这些库提供了一些常用的函数和工具,例如用于网络通信的socket库、用于科学计算的numpy和scipy库、用于绘图的matplotlib库等。
is_valid函数用于判断相关系数数组中的值是否满足一定的条件。具体来说,它会判断数组中第一个值是否大于0.8,如果大于则继续判断数组中后面的25个值是否都大于0.8,如果都大于则返回True,否则返回False。
在main函数中,代码首先创建了一个UDP套接字并绑定了本地的IP地址和端口号。然后定义了一些常量,包括采样点数N、采样频率fs、离散时间序列n和频率序列f。这些常量为后续的信号处理和绘图做准备。
接下来,代码从文件中读取了标准的chirp数据并将其转换为numpy数组。然后,代码进入一个无限循环,不断接收UDP数据并对其进行处理。具体来说,代码首先从接收到的数据中取出音频数据,并将其转换为numpy数组。然后,代码对音频数据进行一些处理并进行相关性分析,最后根据相关性分析的结果进行判断并输出结果。
阅读全文